Python中的random模块:生成随机数的魔法工具

boyanx1个月前技术教程10

在编程中,随机数无处不在——无论是游戏中的随机事件、抽奖程序中的公平选择,还是模拟实验中的数据生成,都离不开它。Python的random模块为我们提供了丰富的工具,让随机数的生成变得简单又有趣。


一、快速入门:基础用法

1. 导入模块

import random

2. 核心功能详解

(1) random.random():生成0到1之间的随机小数

  • 功能:返回 [0.0, 1.0) 范围内的随机浮点数。
  • 示例
print("随机小数:", random.random())  # 输出示例:0.456789

(2) random.randint(a, b):生成包含a和b的随机整数

  • 功能:返回 [a, b] 范围内的整数(包含端点)。
  • 示例
print("1到10的随机整数:", random.randint(1, 10))  # 输出可能是7

(3) random.randrange(start, stop, step):生成带步长的随机整数

  • 功能:类似 range(),返回 [start, stop) 范围内以 step 为步长的随机整数。
  • 示例
print("偶数随机数:", random.randrange(0, 10, 2))  # 输出可能是0, 2, 4, 6, 8

(4) random.uniform(a, b):生成指定范围内的随机小数

  • 功能:返回 [a, b] 范围内的浮点数(包含端点)。
  • 示例
print("1.5到5.5的随机小数:", random.uniform(1.5, 5.5))  # 输出可能是3.2

二、序列操作:列表与字符串

(1) random.choice(sequence):随机选择一个元素

  • 功能:从列表、字符串等序列中随机挑选一个元素。
  • 示例
fruits = ['苹果', '香蕉', '橙子']
print("今天吃:", random.choice(fruits))  # 输出可能是"香蕉"

(2) random.choices(sequence, k=1):随机选择多个元素(可重复)

  • 功能:从序列中抽取 k 个元素,允许重复
  • 示例
print("抽3次奖:", random.choices(['A', 'B', 'C'], k=3))  # 输出可能是['A', 'A', 'B']

(3) random.shuffle(sequence):打乱序列顺序

  • 功能直接修改原列表,随机打乱元素顺序。
  • 示例
numbers = [1, 2, 3, 4]
random.shuffle(numbers)
print("打乱后的列表:", numbers)  # 输出可能是[3, 1, 4, 2]

(4) random.sample(sequence, k):随机抽取不重复的k个元素

  • 功能:从序列中抽取 k不重复的元素,返回新列表。
  • 示例
print("抽3个不重复数字:", random.sample(range(10), 3))  # 输出可能是[5, 0, 9]

三、高级用法与注意事项

(1) random.seed(a):设置随机数种子

  • 功能:固定随机数生成的起点,确保结果可复现。
  • 示例
random.seed(42)
print("第一次:", random.randint(1, 10))  # 输出7
random.seed(42)
print("第二次:", random.randint(1, 10))  # 同样输出7

(2)生成随机字符串(结合string模块)

import string
chars = string.ascii_letters + string.digits  # 包含大小写字母和数字
print("随机密码:", ''.join(random.choices(chars, k=8)))  # 输出类似"a3$9FvB"

(3)权重随机选择

print("更可能选到大数:", random.choices([1,2,3,4,5,6], weights=[1,1,1,1,1,10], k=1))

安全警告:不要用random生成密码!

  • 替代方案:使用更安全的secrets模块(Python 3.6+):
import secrets
print("安全的随机数:", secrets.randbelow(100))

四、功能速查表

功能

描述

典型应用场景

random.random()

生成 [0.0, 1.0) 的随机小数

概率计算、数据模拟

random.randint(a, b)

生成 [a, b] 的随机整数

抽奖、骰子游戏

random.randrange()

生成带步长的随机整数

生成偶数、特定间隔的数

random.uniform(a, b)

生成 [a, b] 的随机小数

物理模拟、实验数据

random.choice()

从序列中随机选择一个元素

抽奖、随机推荐

random.choices()

从序列中随机选择多个元素(可重复)

带权重的抽奖

random.shuffle()

打乱列表顺序

洗牌、随机排序

random.sample()

从序列中抽取不重复的k个元素

问卷调查、随机分组

random.seed()

固定随机种子

调试、复现实验结果

通过本文,你已掌握random模块的核心用法!尝试用它实现一个猜数字游戏,或模拟掷骰子的过程吧!

相关文章

rand、randbetween函数生成随机数,用于随机分组、不重复抽奖

大家好!今天和大家分享,Excel中可以生成随机数的两个函数:rand函数、randbetween函数。本文主要包括两部分:1、介绍rand、randbetween函数的基本用法;2、介绍rand函数...

两千余高考生一舞决高低 成绩本月底公布

台上十分钟,台下十年功。这两天在西北民族大学音乐舞蹈学院的教室内,一位位脚蹬舞鞋的艺考生,正在拼尽全力用短短的几分钟展示自己最优美的舞姿。从1月19日开始至23日,2019年我省普通高校招生舞蹈学类专...

对人员进行随机分组,分步骤详细解释,看了就学会了

大家好,我是套路EXCEL!如上图,需要将12个人随机分成3组,每组4人。函数公式如下:=ROUNDUP(CHOOSECOLS( SORT(HSTACK(ROW(1:12), RANDARRAY(12...

12月29日定期维护公告 新强P玩法来袭

亲爱的玩家朋友:为保证服务器的运行稳定和服务质量,《梦幻西游2》所有服务器将于2015年12月29日上午7:00停机,进行每周例行的维护工作。预计维护时间为上午7:00~9:00。如果在预定时间内无法...

excel函数技巧:map+filter+randarray随机组队

如图,A列为源数据,如何用公式将24个人,以3人为一组随机分组,分为8组?如何随机组队,即将组别一样的人放到同一个单元格中,公式如下:=MAP(SEQUENCE(8)-1,LAMBDA(x,TEXTJ...

Excel名单分组太难?两种方法投票/销售/签到/分班数据10秒自动排

在日常工作中,我们经常需要统计员工的投票结果,比如将投“方案一”和“方案二”的人员名单分别整理成表格,领导要求姓名按10人一排排列。这类需求如果用传统方法手动复制粘贴,效率极低。今天教大家两种方法:小...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。