当前位置:首页>python>一文吃透 Python 随机数:从基础用法到实战案例

一文吃透 Python 随机数:从基础用法到实战案例

  • 2026-09-04 09:11:15
一文吃透 Python 随机数:从基础用法到实战案例

大家好,我是郭立员~,本文所讲内容仅供学习参考,请勿非法使用。

前言

python基础语法里面并没有随机数命令,但是有自带的随机数模块 random。

import randomnum = random.randint(1, 10)print(num)

常见用途

1、短信验证码

注册各种app时会收到一条短信,短信内容中包含一个4到6位的数字验证码,这个验证码就是用随机数生成。

以4位数字验证码为例:

①、数字首位可以是0

原理是0~9999范围内,随机生成一个数字,如果位数低于4位,在前面用0补齐。

import randomcode = f"{random.randint(0, 9999):04d}"print(code)

f"{x:04d}"是强制格式数字x为4位数字,不足在前面补0。

d = integer,代表这是一个整数4 = 固定显示 4 位数字0 = 不足 4 位时,前面用 0 补齐

我一般会这样写:0>4

0 = 补齐的字符是0> = 对齐方式是右对齐4 = 固定显示4位数

只有在补齐字符是0的时候才可以省略对齐符号,当然除了右对齐>,还有左对齐<,居中对齐^

对齐的用法,比如123和45678两个数字进行对齐:

左对齐

12345678

1和4对齐,空缺位是123后面两位。

右对齐

  12345678

3和8对齐,空缺位是123前面两位。

居中对齐

 123 45678

2和6对齐,空缺位是123前后各一位。

②、首尾不为0

为了方便,重启生成固定位数的时候,首尾都不为零,因为在现实生活中如果一个数字首尾是0,通常是被省略的。

首尾不为0,那么就从1开始,最小的4位数就是1000

import randomcode = random.randint(1000, 9999)print(code)

一个4位数字的验证码短信就可以这样写了:

import randomcode = random.randint(1000, 9999)print(f"【某app】验证码{code},用于手机验证码登录,5分钟内有效。验证码提供给他人可能导致账号被盗,请勿泄露,谨防被骗。")

2、随机操作

用随机数控制判断是否生效。

import randomrndNum = random.randint(1,3)if rndNum == 1:    print("执行操作1")if rndNum == 2:    print("执行操作2")if rndNum == 3:    print("执行操作3")

对于随机执行操作,还可以用random.choice命令。

import randomdef 操作1():    print("点这里")def 操作2():    print("点那里")def 操作3():    print("滑动")random.choice([操作1, 操作2, 操作3])()

把每一个操作封装成一个函数,然后把函数调用做成一个列表[操作1, 操作2, 操作3],最后用random.choice命令随机选一个函数执行。

3、密码/令牌

这个是随机数最常见的用途:生成随机字符串。

①、生成一个八位的随机字符串。

由于是学习,我们不考虑string模块一键生成随机字符串,而是用基础的语法自行编写。

import randomchars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'result = ""for _ in range(8):    result += random.choice(chars)print(result)

代码中定义的chars是所有的字母和数字,这里可以用string模块代替。

import stringprint(string.ascii_letters)   #大小写字母print(string.ascii_lowercase) #小写字母print(string.ascii_uppercase) #小写字母print(string.digits)          #数字

循环部分也可以简写:

import randomchars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'result = ''.join(random.choice(chars) for _ in range(8))print(result)

最终的代码:

import randomimport stringchars = string.ascii_letters + string.digitsresult = ''.join(random.choice(chars) for _ in range(8))print(result)

②、首位字母大写的8位随机字符串

第一位是随机字母,并且还要大写。

import randomimport stringfirst = random.choice(string.ascii_uppercase)rest  = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(7))res   = first + restprint(res)

4、抽奖/摇号

这个也是一种常见的随机,它的特点是随机结果不重复。

比如现在有0123456789一共10个小球,我要从里面抽出4个小球,按照上面生成4位随机数字,那么有可能出现4个小球中有相同的序号,这就不符合逻辑了,所以必须不能出现重复的随机数。

方法1:每拿一个小球,就从原来那堆小球中减掉一个。

import randomballs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]result = []for i in range(4):    selected = random.choice(balls)    result.append(selected)    balls.remove(selected)print("抽到的:", result)print("剩下的:", balls)

方法2:每生成随机一个数字,用一个容器装起来,在下一个随机数放进容器前,先看一下容器内容有没有相同的数字,如果存在就不放入,循环操作,直到容器内有4个数字。

import randomcontainer = []while len(container) < 4:    num = random.randint(0, 9)    if num not in container:        container.append(num)print("最终抽到的4个不重复数字:", container)

方法3:使用random.sample直接生成不重复的随机数

import randomballs = random.sample('0123456789', 4)result = ''.join(balls)print(result)

常用的随机案例就这些,其他像坐标随机、范围随机啊,这些本质上都是用随机数作为控制变量,实现随机功能。

=正文完=

如果有其他问题可以加我的微信(xiaomu86119),或扫下方二维码

最新文章

随机文章