【学习】python每天进步一点点-random


经常会用到random里面各种各样的方法,每用到新的就记录下来吧~

1.random()

最最最基本的,基本上该模块的绝大多数函数都基于这个函数,它会生成一个在 [0.0, 1.0) 区间内均匀分布的浮点数

2.randint(a, b)

用来生成 [a,b] 之间的随意整数,包括两个边界值

3.seed(a=None, version=2)

改变随机数生成器的种子

“伪随机数是以相同的概率从一组有限的数字中选取的…随机数的生成是从种子值开始…”
所谓假Random,是指所返回的随机数字其实是一个稳定算法所得出的稳定结果序列,而不是真正意义上的随机序列。
Seed就是这个算法开始计算的第一个值。所以就会出现只要seed是一样的,那么后续所有“随机”结果和顺序也都是完全一致的。
通常情况下,你可以用 DateTime.Now.Millisecend() 也就是当前始终的毫秒来做Seed
.因为毫秒对你来说是一个1000以内的随即数字。 这样可以大大改善保准库的Random结果的随机性。
不过这仍然算不上是完全随机,因为重复的概率还是千分之一。
另外需要注意的是,如果一直调用标准库Random,那么在调用了N次以后,输出结果就会循环最开始的序列了。也就是说,标准库Random所能生成的不同结果的个数也是有限的。32位系统一般也就是几万次以后就会出现重复。

4.uniform(a, b)

返回随机的浮点数 N 满足 a <= N <= b 如果 a <= b ,反之 b <= N <= a

5.random.shuffle(x[, random])

洗牌。之前用的时候还接了一个 List 一直报错,后来才知道它直接在 x 上操作,没有返回值。官方文档建议:shuffle an immutable sequence and return a new shuffled list, use sample(x, k=len(x)) instead.

6.random.sample(population, k)

从有序列表中选k个作为一个片段返回。(无放回)

7.random.choice(seq)

从一个非空序列选出随机一个元素。seq 泛指 list,tuple,String 等,注意 seq 不能为空,否则会抛出 IndexError 异常

8.random.choices(population, weights=None, *, cum_weights=None, k=1)

依概率从指定序列中(有放回)随机抽取 k 个元素,可以设定 weights 或是 cum_weights 来改变元素权重。一直没搞懂 weights 和 cum_weights 的区别,看这里 Nickil Maveli 的回答就完全懂了。weights 最后也是转换成 cum_weights 来处理的,所以后者会更快一些。
在这里插入图片描述
在这里插入图片描述
参考资料:
1.随机种子 https://blog.csdn.net/qinglu000/article/details/46119621
2.官方文档 https://docs.python.org/3.6/library/random.html?highlight=random#module-random

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值