一Python的random模块介绍

Python中的random模块用于生成随机数.
几乎所有模块函数都依赖于基本函数 random() ,它在半开放区间 [0.0,1.0) 内均匀生成随机浮点数 。 Python 使用 Mersenne Twister 作为核心生成器。 它产生 53 位精度浮点数 ,周期为 2**19937-1 ,其在 C 中的底层实现既快又线程安全。 Mersenne Twister 是现存最广泛测试的随机数发生器之一 。 但是,因为完全确定性 ,它不适用于所有目的,并且完全不适合加密目的。

这个模块提供的函数实际上是 random.Random 类的隐藏实例的绑定方法。 你可以实例化自己的 Random 类实例以获取不共享状态的生成器 。

方法 方法概述
random.random() 用于生成一个0到1的 [0,1.0),不包含1
random.uniform(a,b) 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限 ,一个是下限
可以是a > b,也可以是a < b
random.randint(a, b) 用于生成一个指定范围内的整数 。其中参数a是下限 ,参数b是上限,生成的随机数n: a <= n <= b
random.randrange([start], stop[, step]) 从指定范围内,按指定基数递增的集合中 获取一个随机数
random.choice(sequence) random.choice从序列中获取一个随机元素
random.shuffle(x[, random]) 用于将一个列表中的元素打乱,即将列表内的元素随机排列
random.sample(sequence, k) 从指定序列中随机获取指定长度的片断并随机排列

1.1 random.random()

用于生成一个0到1的 [0,1.0),不包含1

>>> print(random.random())
0.5714025946899135
>>> print(random.random())
0.4288890546751146
>>> print(random.random())
0.5780913011344704
>>>

1.2 random.uniform(a,b)

用于生成一个指定范围内的随机符点数 ,两个参数其中一个是上限,一个是下限
可以是a > b,也可以是a < b

>>> print(random.uniform(1,10))
2.8548840892555156
>>> print(random.uniform(100,10))
26.8010873778412
>>>
>>> print(random.uniform(10,10))
10.0
>>>
>>> print(random.uniform(0.001,1))
0.6538190613672746
>>> print(random.uniform(0.001,1))
0.16106932696230084
>>>

1.3 random.randint(a, b)

用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限 ,生成的随机数n: a <= n <= b

>>> print(random.randint(0.001,1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 220, in randint
    return self.randrange(a, b+1)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 184, in randrange
    raise ValueError("non-integer arg 1 for randrange()")
ValueError: non-integer arg 1 for randrange()
>>>
>>> print(random.randint(0,1))
1
>>> print(random.randint(0,100))
41
>>> print(random.randint(1000,100))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 220, in randint
    return self.randrange(a, b+1)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\random.py", line 198, in randrange
    raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (1000,101, -899)
>>>

1.4 random.randrange([start], stop[, step])

从指定范围内,按指定基数递增的集合中 获取一个随机数

>>> print(random.randrange(1,10,2))
1
>>> print(random.randrange(1,10,2))
3
>>> print(random.randrange(1,10,2))
5
>>> print(random.randrange(1,10,2))
1
>>> print(random.randrange(1,10,2))
7
>>> print(random.randrange(1,10,2))
3
>>> print(random.randrange(1,10,2))
9
>>>

1.5 random.choice(sequence)

random.choice从序列中获取一个随机元素

>>> print(random.choice(['Oracle','MySQL','SQL Server','Postgresql']))
SQL Server
>>> print(random.choice(['Oracle','MySQL','SQL Server','Postgresql']))
SQL Server
>>> print(random.choice(['Oracle','MySQL','SQL Server','Postgresql']))
Postgresql

1.6 random.shuffle(x[, random])

用于将一个列表中的元素打乱,即将列表内的元素随机排列

>>> db = ['Oracle','MySQL','SQL Server','Postgresql']
>>> random.shuffle(db)
>>> print(db)
['Oracle', 'Postgresql', 'SQL Server', 'MySQL']
>>>

1.7 random.sample(sequence, k)

从指定序列中随机获取指定长度的片断并随机排列

>>> import random
>>> db = ['Oracle','MySQL','SQL Server','Postgresql']
>>> print(random.sample(db,4))
['SQL Server', 'Oracle', 'MySQL', 'Postgresql']
>>> print(random.sample(db,3))
['Postgresql', 'SQL Server', 'MySQL']
>>> print(random.sample(db,2))
['Oracle', 'SQL Server']
>>>
>>> print(random.sample(db,1))
['Oracle']
>>>
>>> print(db)
['Oracle', 'MySQL', 'SQL Server', 'Postgresql']
>>>

参考

1.https://docs.python.org/zh-cn/3.6/library/random.html
2.https://www.cnblogs.com/liangmingshen/p/8909376.htm

本文版权归趣营销www.SEOgUrublog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ卍61910465