一日一技:Python 中的random模块_python random模块详解

liftword2个月前 (02-05)技术文章22

Python 中的random模块

Python随机模块教程展示了如何在Python中生成伪随机数。

随机数发生器

随机数生成器(RNG)生成一组值,这些值在外观上不显示任何可区分的模式。随机数发生器分为两类:硬件随机数发生器和伪随机数发生器。硬件随机数发生器被认为可以产生真正的随机数。伪随机数生成器根据软件算法生成值。它们产生看起来随机的值。但是,如果算法已知,则这些值是确定性的并且可以重现。

在计算中,随机生成器用于赌博,游戏,模拟或加密。

注意:为了安全起见,必须使用加密安全的伪随机数生成器。

为了提高伪随机数生成器的质量,操作系统使用从设备驱动程序收集的环境噪声,用户输入延迟或一个或多个硬件组件的抖动。这是密码安全的伪随机数生成器的核心。


种子

种子是一个初始化随机数生成器的值。 随机数生成器通过对先前的值执行某些运算来产生值。 当算法开始时,种子是生成器操作所依据的初始值。 生成器中最重要和最困难的部分是提供接近真实随机数的种子。

在Python中,random.seed函数提供了种子值。 如果未明确指定该值,则Python使用系统时钟或其他随机源。


注意:同一种子产生相同的伪随机数集。


Python中的module模块- same seed

在下面的示例中,我们使用相同的seed.

import random


myseed = 16

random.seed(myseed)

print(random.random())
print(random.random())
print(random.random())

print('********************************')

random.seed(myseed)

print(random.random())
print(random.random())
print(random.random())

输出结果为:

0.36152277491407514
0.480480665601294
0.4169526266056648
********************************
0.36152277491407514
0.480480665601294
0.4169526266056648


Python模块module中 random.randint方法:

random.randint函数生成值[x,y]之间的整数,举例说明,如下:

import random


val = random.randint(1, 10)
print(val)

val = random.randint(1, 10)
print(val)

val = random.randint(1, 10)
print(val)

val = random.randint(1, 10)
print(val)

上面的例子结果显示产生数字1到10之间的四个随机整数,结果如下:

10
4
9
3

Python模块module中的 random.randrange方法:

random.randrange函数不包括该间隔的右侧。 它选择[x,y)之间的值,示例如下:

import random


val = random.randrange(1, 10)
print(val)

val = random.randrange(1, 10)
print(val)

val = random.randrange(1, 10)
print(val)

val = random.randrange(1, 10)
print(val)

上面的示例生成数字1到10之间的四个随机整数,其中排除了10这个值,大家可以去操作体验一下。


random.uniform方法

random.uniform函数在值[x,y]之间生成随机浮点数,示例如下:

import random


val = random.uniform(1, 10)
print(val)

val = random.uniform(1, 10)
print(val)

val = random.uniform(1, 10)
print(val)

val = random.uniform(1, 10)
print(val)

该示例在数字1和10之间产生四个随机浮点数,执行结果如下:

9.594596536362012
5.832673168195081
6.7942727933257
7.035310921661894

random.choice

random.choice函数从非空序列返回一个随机序列,示例如下:

import random


words = ['sky', 'storm', 'rock', 'falcon', 'forest']


val = random.choice(words)
print(val)

val = random.choice(words)
print(val)

val = random.choice(words)
print(val)

val = random.choice(words)
print(val)

执行结果如下:

forest
forest
sky
storm

random.shuffle

random.shuffle函数可对序列进行随机排序

import random


words = ['sky', 'storm', 'rock', 'falcon', 'forest']


random.shuffle(words)
print(words)

random.shuffle(words)
print(words)

执行结果如下:

['storm', 'falcon', 'rock', 'sky', 'forest']
['falcon', 'storm', 'rock', 'forest', 'sky']


random.sample

random.sample允许从序列中随机选择n个唯一元素的样本,示例如下:

import random


words = ['sky', 'storm', 'rock', 'falcon', 'forest']


sample = random.sample(words, 3)
print(sample)

sample = random.sample(words, 3)
print(sample)

执行结果如下:

['rock', 'storm', 'falcon']
['forest', 'sky', 'rock']

Python secrets

secrets模块用于生成适用于管理数据(例如密码,帐户身份验证或安全令牌)的密码学强随机数,示例如下:

import secrets
import string


print(secrets.token_hex(12))
print(secrets.token_urlsafe(12))

alphabet = string.ascii_letters + string.digits
password = ''.join(secrets.choice(alphabet) for i in range(8))

print(password)

token_hex函数以十六进制返回随机文本字符串。 token_urlsafe函数返回一个随机的URL安全文本字符串。

alphabet = string.ascii_letters + string.digits
password = ''.join(secrets.choice(alphabet) for i in range(8))

在这里,我们生成一个八个字符的字母数字密码,执行结果如下:

69e6919fc04cbd6f9f5a25dc
eLL8-yT4cictksh8
YbpPzXvt

好了,在这一节中我们介绍了python中的random模块.,random这个模块是python中自带的,不需要安装,拿起来就可以直接用了。

希望对大家有用,有用的话,目的也就达到了。

相关文章

Python随机模块22个函数详解_python 随机ua

随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平时数据分析各种分布的数据构造也会用到。random模块,用于生成伪随机数,之所以称之为伪随机数,是...

python中随机模块random的用法_pythonrandom随机数的用法

Python 有一个可用于制作随机数的内建模块。现在总结归纳一下,方便大家查询学习random 模块有一组如下的方法:序号方法描述1seed()初始化随机数生成器。2getstate()返回随机数生成...

在PLC中生成随机数_在plc中生成随机数的代码

有时为了某些测试需求,需要仿真产生一些数据。这时,我们可以通过调取指令或自行编写程序来生成这些随机数据。以下以博途为例,简要说明了随机数产生的几种方式:一、读取系统时间的纳秒作为随机数以固定周期直接将...

python 生成随机数、随机字符串_python语言随机产生数字

import random import string # 随机整数: random.randint(1,50) # 随机选取0到100间的偶数: random.randrange(0, 101,...

零基础学python第七天之随机整数randint

我们的目标是:用最短的时间从编程零基础提升到掌握python常用的基本知识。加油!昨天我们的猜数字小游戏实现了多次运行,直到猜中为止,这个小游戏还有一个小不足,就是预设数是固定的,对我们来说,没有什么...

「万能Python」-21-标准模块-random

概述 random是Python标准库中的一个模块,它提供了生成随机数的功能。具体来说,它包含了各种用于生成随机数的函数、类和变量。常见使用方法random():生成一个0到1之间的随机浮点数,范围是...