random库中的小秘密

random中的小秘密

我们都知道python中有一个很强大的随机数生成库:random
random库中常用的函数有八个,分别是:

  • random()
  • randint()
  • randrange()
  • getrandbits()
  • uniform()
  • choice()
  • shuffle()
  • seed()

从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但时计算机是不可能产生随机值,真正的随机数也是在特定条件下产生的确定值,只不过这些条件我们没有理解,或者超出了我们的理解范围。计算机不能产生真正的随机数,那么伪随机数也就被称为随机数。
——伪随机数:计算机中通过采用梅森旋转算法生成的(伪)随机序列元素。

明白了吧,其实计算机中产生的随机数并不是真正的随机数,而是一个伪随机序列。下面通过实验来说明这点,帮助大家更好的理解。
首先我们先介绍random中两个常见的函数。
random():生成一个[0.0,1.0)之间的随机小数

seed(a=None):初始化给定的随机数种子,默认为当前系统时间

import random
random.seed(10)		#这个函数是没有任何输出的,它的作用是初始化了random
					的随机数种子,比如现在参数为10,那么random库中的函数
					生成随机数时就会产生种子10对应的伪随机序列

上面我们已经给定了随机数种子,那么现在开始实验。

import random
random.seed(10)
for i in range(10):
    print(random.random())

在初始化种子为10以后,我们执行了random.random()函数十次,我们来看一下结果,很显然没有任何规律。

0.5714025946899135
0.4288890546751146
0.5780913011344704
0.20609823213950174
0.81332125135732
0.8235888725334455
0.6534725339011758
0.16022955651881965
0.5206693596399246
0.32777281162209315

但是如果我们再把上边的程序执行一次就会发现一些有趣的事情了。

0.5714025946899135
0.4288890546751146
0.5780913011344704
0.20609823213950174
0.81332125135732
0.8235888725334455
0.6534725339011758
0.16022955651881965
0.5206693596399246
0.32777281162209315

可以看到结果完全一样,也就是说只要seed()初始化种子一定,那么函数random()产出的随机数值顺序也就确定了,或者说产生的随机数从伪随机数列中顺序产生。

至于random库中的其他重要函数,大家有兴趣可以去试一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python小洋仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值