random库是使用随机数(随机产生的一些数,计算机不会产生随机数)的Python标准库(随Python的解释器而自带的库,不需要安装直接使用import来使用它)
真正的随机数也是在各种复杂条件(并不充分理解或已经超越我们的理解能力)下而产生的确定值。
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
random库主要用于生成随机数
使用random库:import random
random库包括两类函数,常用共9个
基本随机数函数(2个) | seed()、random() |
扩展随机数函数(7个) | uniform( )、randint( )、randrange( )、choice( )、shuffle( )、sample( )、getrandbits( ) |
基本随机数函数:
随机数种子来产生的
随机数种子确定了随机序列的产生
随机数种子根据梅森旋转算法从而产生随机序列
1.random() 产生一个[0.0,1.0]之间的随机小数
代码示例如下:
import random
print(random.random())
运行界面如下:
2.seed(a=None) 初始化给定的随机数种子,默认为当前系统时间
random.seed(10) #产生种子10对应的序列
代码如下所示:
import random
random.seed()
print(random.random())
运行界面如下所示:
代码示例如下:
import random
random.seed(10)
print(random.random())
运行界面如下:
根据这两个运行界面进行相比较,我们可以得知结果不一样,造成这样的差别的原因是第二个所选的seed(10)为产生种子10对应的序列。第一个为seed()为空,则默认为产生种子当前系统时间对应的序列,所以两者不一样的同时也突出了seed的作用。
扩展随机数函数:
1.uniform用于生成一个指定范围[a,b]内的随机浮点数n,若a<b,则a<=n<=b,若a>b,则b<=n<=a。
格式如下所示:
random.uniform(a,b)
代码如下所示:
import random
print(random.uniform(1,5))
运行界面如下:
2.randint用于生成一个指定范围[a,b]内的整数n,a<=n<=b。
格式如下所示:
random.randint(a,b)
代码如下所示:
import random
print(random.randint(1,5))
运行界面如下:
3.randrange用于生成一个按指定基数递增的序列,再从该序列中获取一个随机数。
格式如下:
random.randrange(m,n,k) #(m,n)之间以k为步长的随机函数。
代码示例如下:
import random
print(random.randrange(10,100,25))
运行界面如下:
当格式中没有k的时候,只有m和n的时候,格式如下所示:
random.randrange(m,n) #(m,n)之间的随机函数。
代码示例如下:
import random
print(random.randrange(10,100))
运行界面如下: ↵
4.choice用于从序列(列表)中获取一个随机元素,参数sequence表示一个有序类型。
格式如下:
random.choice(sequence)
代码如下所示:
import random
print(random.choice([1,2,3,4,5]))
运行界面如下:
5.shuffle用于将序列(列表)x中的元素随机排列。
格式如下:
random.shuffle(x)
代码格式如下:
import random
x=[0,1,2,3,4,5]
random.shuffle(x)
print(x)
运行界面如下所示:
6.sample从指定序列中获取长度为k的片段,随机排列后返回新的序列,该函数可以基于不可变序列进行操作。
格式如下:
random.sample(sequence,k)
代码示例如下:
import random print(random.sample(('java','php','sql'),k=3))#从该序列里面获取长度为3的片段,然后随机排列后返回新的序列。即序列里面的每一个值为长度1,从中取三个值进行随机排列形成新的序列。print(random.sample(('java','php','sql'),k=2)))#从该序列里面获取长度为2的片段,然后随机排列后返回新的序列。即序列里面的每一个值为长度1,从中取两个值进行随机排列形成新的序列。
运行界面如下:
7.getrandbits(k)用于生成一个k比特长的随机整数(这个长度范围不是用十进制的范围来确定,而是用比特数的长度来确定)
格式如下:
random.getrandbits(k)
运行界面如下:
8.当 我们使用种子的时候,取随机序列种子为10的数,进行选取后,我们再进行选取的时候,所选取的数值已不再是刚刚所选取的数值。两次结果输出不一样。
代码示例如下:
import random
random.seed(10)
print(random.random())
print(random.random())
运行界面如下:
再现随机过程:首先设定种子,如果说只是用随机数,不关心程序复现同样的结果,就可以不用设定种子。
小提醒:在python代码中,非常有必要将几行代码放在一行中,如果代码在一行的话,中间可以用分号来分割。
python的浮点数的取值范围是小数点后16位。