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

liftword5个月前 (02-05)技术文章78

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获取随机数方法汇总_python语言如何获取随机整数

1. random.random()作用:随机生成一个[0,1)之间的浮点数import random print(f'随机生成一个[0,1)之间的浮点数={random.random()}')2....

Python 随机字符串_python 生成随机字符

在很多时候我们可能需要生成一些随机字符串。Python 也为我们提供了生成随机字符串的方法和函数。这个函数是在 random 库中定义的函数 choice。通常 choice 将会从给定的字符串中挑选...

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

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

Python随机抽查部分学生,手把手教你学会random

疫情期间的网课上你有被熊孩子气到炸吗网线的两端,是不是这样巧合呢复课后的课堂上你有被熊孩子气到疯吗等下,跑题了,下面言归正传关键知识点:random库、判断、循环、列表、异常处理、文件的读取等。开发环...

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

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

Python实现随机&批量梯度下降算法

一.概述梯度下降属于迭代法的一种,可以用于求解最小二乘问题。在求解机器学习算法的模型参数时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函...