摘要:import random# 生成一个6位的随机数字,每位数字可以是0-9random_number = ""for _ in range(6):random_digit = random.randint(0, 9)random_number += str(r
如何生成验证码_随机数字密码_真随机
回忆上次内容
上次主要是 随机数的生成
包括 两端 a,b
使用 random包中的 randint(a,b)函数
生成[a,b]范围中的整数
手机验证码 可以自己生成吗?🤔
提问
但是这样的话
最小值 也得是 100000
第1位 不能是0 了
再问
看起来做了个循环
代码可以理解
import random# 生成一个6位的随机数字,每位数字可以是0-9random_number = ""for _ in range(6):
random_digit = random.randint(0, 9)
random_number += str(random_digit)# 显示生成的随机数字print(f"生成的6位随机数字是: {random_number}")
结果
运行成功
我想要结果
不止包括数字
还包括大小写字母
可以吗?
提问
import randomimport string# 定义字符集,包括数字、大写字母和小写字母characters = string.digits + string.ascii_uppercase + string.ascii_lowercase# 生成一个6位的随机字符串random_string = ""for _ in range(6):
random_char = random.choice(characters)
random_string += random_char# 显示生成的随机字符串print(f"生成的6位随机字符串是: {random_string}")
看起来 取值范围 扩大了
characters = string.digits + string.ascii_uppercase + string.ascii_lowercase
结果
想要出了数字、大小写字母
还包括符号
再问
import randomimport string# 定义字符集,包括数字、大写字母、小写字母和符号characters = string.digits + string.ascii_uppercase + string.ascii_lowercase + string.punctuation# 生成一个6位的随机字符串random_string = ""for _ in range(6):
random_char = random.choice(characters)
random_string += random_char# 显示生成的随机字符串print(f"生成的6位随机字符串是: {random_string}")
取值范围 更大了
characters = string.digits + string.ascii_uppercase + string.ascii_lowercase + string.punctuation
结果
结果有可能没有某类符号
想要结果必须包含
数字
大写字母
小写字母
符号
在原来的上下文基础上
继续追加提问
提问
import randomimport string# 定义字符集digits = string.digits # 数字uppercase_letters = string.ascii_uppercase # 大写字母lowercase_letters = string.ascii_lowercase # 小写字母punctuation = string.punctuation # 符号# 确保生成的字符串中包含至少一个数字、一个大写字母、一个小写字母和一个符号random_string = [ random.choice(digits), random.choice(uppercase_letters), random.choice(lowercase_letters), random.choice(punctuation)
]# 从所有字符集中选择剩余的两个字符all_characters = digits + uppercase_letters + lowercase_letters + punctuationfor _ in range(2):
random_string.append(random.choice(all_characters))# 打乱顺序以确保随机性random.shuffle(random_string)# 将列表转换为字符串random_string = ''.join(random_string)# 显示生成的随机字符串print(f"生成的6位随机字符串是: {random_string}")
四类字符 各来一个
剩下两个 随机得到
然后让顺序 随机
可以让 随机结果 固定下来 吗?
事无绝对
如果上限和下限 被钳位(clamp)
那么随机数
也就 被 钳成
固定数值 了
如果下限高于上限呢?
胡乱尝试
程序报错
ValueError
空的范围
对于randrange函数
去找找
这个 报错信息
搜索
在/usr/lib/python3.8/random.py
反向搜索
/empty range for randrange
真的找到了抛出异常的位置
位置
按n查找下一个匹配
可以找到具体报错的位置 226 行
天哪 😱
随机也是有章可循的
随机数 也是 算法计算得到的结果
也就是说
随机 也是 可控 的?! 😱
幸运大转盘
物理世界 中的随机
认为是真随机
上帝扔骰子
存在薛定谔的猫
但可能 在概率上 动心思
盲盒
大乐透
对比
虚拟世界的随机
ssr
抽卡
除了算法本身的 控制之外
随机函数 本身 也是可以 被控制的
不存在 真随机
ai怎么看呢?
计算机中的随机
总结
这次输出了
随机数字 密码
这下知道
平时收到的验证码
怎么来的了
计算机中 没有所谓的 真·随机
一般都是 依靠时间为变量 得到的 随机
AI 能如何 辅助我们编程呢?
我们下次再说~ 👋
蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
来源:肖潇科技观