random库的使用与详解

本文详细介绍了Python random库的使用,包括基本的随机数生成函数seed()和random(),以及扩展的随机数函数如uniform(), randint(), randrange()等。通过实例演示了如何设置随机数种子并生成指定范围内的随机数,帮助读者理解种子在重复性和可预测性上的作用。

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

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位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一直再追梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值