当前位置: 首页 > 图灵资讯 > 行业资讯> Python random模块及用法

Python random模块及用法

发布时间:2025-10-29 16:15:46

random 模块主要包括生成伪随机数的各种功能变量和函数。

在 Python 先导入交互式解释器 random 然后输入模块 random.__all__ 命令(__all__ 变量代表模块开放的公开接口),可以看到模块中包含的所有属性和函数:

>>>random.__all__
['Random','seed','random','uniform','randint','choice','sample','randrange','shuffle','normalvariate',
'lognormvariate','expovariate','vonmisesvariate','gammavariate','triangular','gauss','betavariate',
'paretovariate','weibullvariate','getstate','setstate','getrandbits','choices','SystemRandom']

在 random 在模块下提供以下常用函数:

random.seed(a=None, version=2):指定种子初始化伪随机数生成器。

random.randrange(start, stop[, stop]):返回从 start 开始到 stop 结束,步长为 step 随机数。实际上相当于 choice(range(start, stop, step)) 但实际底层并没有产生间隔对象。

random.randint(a, b):为生成一个范围 a≤N≤b 随机数。相当于 randrange(a, b+1) 的效果。

random.choice(seq):从 seq 如果在中间随机抽取一个元素, seq 为空,则引起 IndexError 异常。

random.choices(seq, weights=None, cum_weights=None, k=1):从 seq 序列中抽取 k 还可以通过个元素 weights 提取指定元素的权重(代表提取的可能性)。

random.shuffle(x[, random]):对 x 顺序执行洗牌“随机排列”操作。

random.sample(population, k):从 population 随机抽取序列 k 独立元素。

random.random():从0.0(含)到 1.0之间的伪随机浮点(不包括)。

random.uniform(a, b):为生成一个范围 a≤N≤b 的随机数。

random.expovariate(lambd):产生指数分布的随机数。其中 lambd 参数(实际上应该是 lambda,只是 lambda 是 Python 所以简写成关键词 lambd)为 1 除了预期的平均值。如果 lambd 如果是正值,则返回的随机数从 0 正无穷大;如果 lambd 如果是负值,返回的随机数从无限到无限 0。

以下程序已演示 random 常见函数在模块中的功能和用法:

importrandom
#0.0的生成范围≤x<1.0伪随机浮点数
print(random.random())
#生成范围为2.5≤x<伪随机浮点数为10.0
print(random.uniform(2.5,10.0))
#伪随机浮点数生成呈指数分布
print(random.expovariate(1/5))
#从0到9生成伪随机整数
print(random.randrange(10))
#随机偶数从0到100生成
print(random.randrange(0,101,2))
#随机抽取一个元素
print(random.choice(['Python','Swift','Kotlin']))
book_list=['Python','Swift','Kotlin']
#随机排列列表元素
random.shuffle(book_list)
print(book_list)
#随机抽取4个独立元素
print(random.sample([10,20,30,40,50],k=4))

在操作上述程序时,可以看到以下输出结果:

0.7097266660597923
6.4845555071809535
9.707899380000603
2
70
Python
['Swift','Python','Kotlin']
[20,10,30,50]

实际上,使用 random 模块中的随机函数可以做很多有趣的事情。例如,以下程序:

importrandom
importcollections
#指定随机抽取6个元素,每个元素的权重(概率)不同
print(random.choices(['Python','Swift','Kotlin'],[5,5,1],k=6))
#模拟从52张扑克牌中抽取20张扑克牌
#在被拍到的20张牌中,10张牌(包括J)、Q、K的牌占多大比例?
#生成16个tens(代表10)和36个low_cards集合(代表其他牌)
deck=collections.Counter(tens=16,low_cards=36)
#从52张牌中随机抽取20张牌
seen=random.sample(list(deck.elements()),k=20)
#统计tens元素有多少,除以20
print(seen.count('tens')/20)

在操作上述程序时,可以看到以下输出结果:

['Swift','Swift','Swift','Swift','Python','Swift']
0.45

相关文章

Python random模块及用法

Python random模块及用法

2025-10-29
urllib和urllib2有什么区别

urllib和urllib2有什么区别

2025-10-29
Python time模块详解

Python time模块详解

2025-10-29
浅谈Python异常处理机制

浅谈Python异常处理机制

2025-10-29
Python finally-资源回收

Python finally-资源回收

2025-10-29
Python traceback模块:获取异常信息

Python traceback模块:获取异常信息

2025-10-29