Random 随机数模块–Python成为专业人士笔记

“专业人士笔记”系列目录:

创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!

创建一个随机用户密码

为了创建一个随机的用户密码,我们可以使用string模块中提供的符号,特别是punctuation 里的标点符号,ascii_letters的字母和digits里的数字:

 from string import punctuation, ascii_letters, digits

然后,我们可以将所有这些符号组合到一个名为symbols的变量中:

 symbols = ascii_letters + digits + punctuation

在这之后,我们可以使用random.SystemRandom生成一个密码,其密码长度为10,完整代码如下:

import random
from string import punctuation, ascii_letters, digits

symbols = ascii_letters + digits + punctuation

secure_random = random.SystemRandom() #真*随机数包,与伪随机数不同,其随机性是由硬件决定的,能保障在极限超算下的良好随机性

password1 ="".join(secure_random.choice(symbols) for i in range(10))  # 真随机数调用

password2 ="".join(random.choice(symbols) for i in range(10))  # 伪随机数调用

print(password1)
print(password2)

# 
 <U^:|Vp<G(
 Kv'-x0\BQK

随机样本 : shuffle, choice 和
sample

shuffle()

如果对于hadoop大数据有了解,那么一定知道hadoop可以使用random.shuffle()以可变且可索引的顺序混合/随机分配项目,看如下例子:

import random
laughs = ["Hi", "Ho", "He"]
random.shuffle(laughs)

# 注意:Shuffles 是替换函数!不能这样写: laughs = random.shuffle(laughs)
print(laughs)
# 输出: ['He', 'Ho', 'Hi'] #每次洗牌后输出都不一样!

choice()

从任意序列中获取随机元素 :

扫描二维码关注公众号,回复: 11305879 查看本文章
import random
laughs = ["Hi", "Ho", "He"]
print(random.choice(laughs))

# 输出: He # 结果可能不一样

sample()

与choice一样,它从任意序列中获取随机元素,但你可以指定获取多少个:

import random
laughs = ["Hi", "Ho", "He"]
print(random.sample(laughs,2))

#输出:['Hi', 'He']

创建随机整数和浮点数 : randint,randrange, random, 和uniform

randint()

返回x和y之间的随机整数(出现的结果中可能包括x和y本身) :

import random
print(random.randint(1, 8)) # 输出: 8 每次运行可能值不同

randrange()

random.randrange的语法与range相同,但与randint不同:其生成的随机数范围,并不包括参数最大值本身:

 random.randrange(100)
 # 0至99之间随机整数

 random.randrange(20, 50)
 # 20至49之间随机整数
 
 random.rangrange(10, 20, 3) 
 # 获取10 至19之间随机 ,其生成的步长为3 (从10, 13, 16 和 19里面生成一个)

random()

返回一个介于0和1之间的随机浮点数 :

random.random() # 输出: 0.66486093215306317 每次输出可能不同

uniform

返回x和y之间的随机浮点数( 出现的结果中可能包括x和y本身 ) :

import random

print(random.uniform(2,9))

# 输出:3.730351385559086

可重复的随机数 : Seed 和State

设置一个特定的种子将创建一个固定的随机数序列 :

import random

random.seed(5)  #设置random的随机种子

#  创建一个固定随机数, 得到一个0到9之间的随机整数 
print(random.randrange(0, 10))
print(random.randrange(0, 10))
print(random.randrange(0, 10)) 

#输出:
 9
 4
 5

#多次运行,发现只要随机种子不变,产生的随机数是一致的

由于种子是固定的,这些结果总是9和4。如果不需要特定的数字,只是需要相同的值,那么也可以使用getstate和setstate恢复到以前的状态 :

import random

# 获取并保存当前种子状态
save_state = random.getstate()

print(random.randrange(0, 10))
# 输出: 5
print(random.randrange(0, 10))
# 输出: 8


# 将种子恢复至保存的状态
random.setstate(save_state)
print(random.randrange(0, 10))
# 输出: 5
print(random.randrange(0, 10))
# 输出: 8

以上代码已通过python3云环境调试,有问题欢迎随时指出,欢迎批评!请不要转载,谢谢

猜你喜欢

转载自blog.csdn.net/oSuiYing12/article/details/106473338