“专业人士笔记”系列目录:
创帆云: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云环境调试,有问题欢迎随时指出,欢迎批评!请不要转载,谢谢