一日一技:Python 中的random模块_python random模块详解
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中自带的,不需要安装,拿起来就可以直接用了。
希望对大家有用,有用的话,目的也就达到了。