Python 动手练: 生成随机数

本练习题重点介绍如何使用 random 模块和 secrets 模块生成随机数。

建议:根据提示完成练习后,再参考文末示例代码。

练习 1:随机生成 3 个能被 5 整除的整数

编写一个程序,生成 3 个介于 100 和 999 之间的随机整数,该整数可被 5 整除。

提示

使用 random 模块的randrange() 方法。

randrange() 方法返回指定递增基数集合中的一个随机数。

randrange() 方法的语法:

import random

random.randrange ([start,] stop [,step])

参数:

start -- 指定范围的开始值,包含在范围内。

stop -- 指定范围的结束值,不包含在范围内。

step -- 指定递增基数。

练习 2:幸运号码

编写一个程序,随机生成 100 个十位数字,并从中挑选两个作为幸运号码。

号码的长度必须为10位数字。

所有 100 个号码必须是唯一的。

提示

使用 randrange() 生成一个包含 100 个随机数字的列表。

然后使用 sample() 方法挑选 2 张幸运号码。

sample() 从序列中选择指定数量的唯一元素。用于无重复的随机抽样。

练习 3:随机密码

编写一个程序,使用 secrets 模块生成一个高度加密的六位随机数。

提示

伪随机数模块random生成的随机数并不随机,大多数情况下,如果不设置随机数种子,会按照系统时间来生成种子,进而生成随机数,若是用random生成的随机数当密码,那被破解的几率应该是很高的。

secrets是python3.6加入到标准库的,使用secrets模块,可以生成适用于处理机密信息(如密码,帐户身份验证,安全令牌)的加密强随机数。

SystemRandom() 使用OS提供的最高质量源生成随机数的类。

练习 4:随机选择一个字符

编写一个程序,从给定字符串中随机选择一个字符。

提示

choice() 方法返回一个列表,元组或字符串的随机项。

语法:

import random

random.choice( seq )

参数:

seq -- 可以是一个列表,元组或字符串。

练习 5:生成六位验证码

编写一个程序来生成六位验证码,验证码由大小写字母组成。

提示

使用 string 模块的 string.ascii_letters 常量,获取所有大小写字母。

使用 for 循环,通过 choice() 随机选择一个字符。

使用 join() 进行连接。

# 练习 1
import random
for n in range(3):
    num = random.randrange(100, 1000, 5)
    print(num)
# 练习 2
import random
list1 = []
for i in range(100):
    list1.append(random.randrange(1000000000, 10000000000))
Lucky = random.sample(list1, 2)
print("幸运号码:", Lucky)
# 练习 3
import secrets
secretsGenerator = secrets.SystemRandom()
pws = secretsGenerator.randrange(100000, 999999)
print("随机密码:", pws)
# 练习 4
import random
str1 = 'zbxx.net'
char = random.choice(str1)
print("随机字符是:", char)
# 练习 5
import random
import string
str1 = ''
letters = string.ascii_letters
for i in range(6):
    str1=str1+''.join(random.choice(letters)) 
print("验证码:", str1)

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!