随机数:Python3.7的random模块详解

本文详细介绍了Python3.7的random模块,包括seed()、getstate()、setstate()等常用函数,以及各种随机数生成方法如uniform()、randrange()、choice()等。此外,还涵盖了不同分布模式的随机数生成,如triangular()、betavariate()等,为开发者提供了全面的随机数生成解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随机数模块random

作者:Shawn
python3.7
手册
https://docs.python.org/3/library/random.html#module-random
部分图片转自wiki

常用函数

random.seed()

random.seed(a=None, version=2)
  • 设置随机种子 ,用于同步不同运行环境的随机数。

random.getstate()

random.getstate()
  • 获得当前状态,用于恢复状态

random.setstate()

random.setstate(state)
  • 恢复状态
>>> import random
>>> s=random.getstate()
>>> random.random()
0.15441857485858956
>>> random.random()
0.6330314601528841
>>> random.setstate(s)
>>> random.random()
0.15441857485858956
>>> random.random()
0.6330314601528841
>>> random.random()
0.04725013105129261

random.getrandbits()

random.getrandbits(k)
  • 生成占内存k位以内的随机整数,硬核秃头专属。
>>> import random
>>> random.getrandbits(10)
674
>>> random.getrandbits(10)
10
>>> random.getrandbits(10)
745
>>> random.getrandbits(10)
560
>>> random.getrandbits(10)
162

random.random()

random.random()
  • 随机产生一个[0,1.)数字。
>>> random() 
0.37444887175646646

random.uniform()

random.uniform(a, b)
  • 产生一个a、b区间的随机数。
>>> uniform(2.5, 10.0)
3.1800146073117523

random.randrange()

random.randrange(start, stop[, step])
  • 整数随机。
  • 功能等同于choice(range(start, stop, step))
>>> randrange(10)                        # 0到9随机
7
>>> randrange(0, 101, 2)                 # 0到100随机偶数
26

random.randint()

random.randint(a, b)
  • 返回一个[a,b]的随机整数。
  • 功能等同于randrange(a, b+1)

random.choice()

random.choice(seq)
  • 返回对象中的一个随机元素。

random.choices()

random.choices(population, weights=None, *, cum_weights=None, k=1)
  • 随机选择,是random.choice(seq)的升级版本。
>>> choice(['win', 'lose', 'draw'])
'draw'

random.sample()

random.sample(population, k)
  • 随机取样
>>> sample([10, 20, 30, 40, 50], k=4)
[40, 10, 50, 30]

  • choices与sample的区别:
    • choices在抽取随机元素时是包含重复元素的,即:一个元素可能会被抽取多次。
    • 反之,在sample中,抽取的元素是不重复的。
    • 所以,在抽取元素大于样本集总数时,choices会继续而sample会报错:
>>> import random
>>> random.choices([1,2,3,4],k=4)
[4, 3, 4, 4]
>>> random.sample([1,2,3,4],k=4)
[3, 1, 2, 4]
>>> random.choices([1,2,3,4],k=5)
[3, 3, 
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值