当前位置: 首页 > news >正文

Python 中的 random 模块

在日常编程中,我们常常需要生成随机数、模拟掷骰子、洗牌、抽奖等功能。Python 提供了一个非常强大的标准库模块 —— random,它可以帮助我们轻松实现这些功能。

本文将带你全面了解 random 模块的使用方法,并通过多个实例帮助你掌握如何在实际项目中应用它。


🔧 一、导入 random 模块

在使用 random 模块之前,我们需要先导入它:

import random

如果你只需要使用其中的某个函数,也可以这样导入:

from random import randint, choice

🎲 二、常用函数详解

1. 生成基本随机数

  • random.random()
    返回一个 [0.0, 1.0) 范围内的浮点数。

    print(random.random())  # 输出类似:0.73456789
  • random.uniform(a, b)
    返回一个 [a, b] 区间内的随机浮点数。

    print(random.uniform(1.0, 5.0))  # 输出如:3.245
  • random.randint(a, b)
    返回一个 [a, b] 区间内的整数(包括 a 和 b)。

    print(random.randint(1, 6))  # 模拟掷骰子
  • random.randrange(start, stop[, step])
    从 range(start, stop, step) 中随机选择一个整数。

    print(random.randrange(1, 10, 2))  # 可能输出:1, 3, 5, 7, 9

2. 随机选择与打乱序列

  • random.choice(sequence)
    从非空序列中随机选择一个元素。

    fruits = ['apple', 'banana', 'cherry']
    print(random.choice(fruits))  # 随机输出其中一个水果
  • random.choices(population, weights=None, *, cum_weights=None, k=1)
    带权重地从总体中抽取多个元素(可重复)。

    colors = ['red', 'green', 'blue']
    print(random.choices(colors, weights=[10, 1, 1], k=3))
    # 更可能选 red
  • random.sample(population, k)
    从序列中随机选择 k 个不重复的元素。

    nums = list(range(10))
    print(random.sample(nums, 3))  # 输出三个不同的数字
  • random.shuffle(x)
    就地打乱序列顺序(无返回值)。

    my_list = [1, 2, 3, 4, 5]
    random.shuffle(my_list)
    print(my_list)  # 输出被打乱的列表

🔁 三、设置随机种子(Seed)

有时候我们需要让程序每次运行时生成相同的“随机”结果,比如用于测试或者重现某些行为。

这时就可以使用 random.seed() 函数来设定一个固定的种子:

random.seed(42)
print(random.random())  # 每次运行都会输出相同的结果

🔒 四、安全警告:不要用于加密场景!

虽然 random 模块很强大,但它使用的是伪随机数生成算法(Mersenne Twister),不适合用于安全相关操作(如密码生成、令牌生成等)。

对于这类需求,请使用 Python 的 secrets 模块(Python 3.6+):

import secretssecure_token = secrets.token_hex(16)
print("安全的随机 token:", secure_token)

🧪 五、实战案例分享

✅ 示例 1:模拟掷骰子游戏

def roll_dice():return random.randint(1, 6)print("你掷出的点数是:", roll_dice())

✅ 示例 2:生成随机密码(不推荐用于生产环境)

import stringdef generate_password(length=8):characters = string.ascii_letters + string.digits + string.punctuationreturn ''.join(random.choice(characters) for _ in range(length))print("随机密码:", generate_password())

⚠️ 注意:为了更安全的密码,请改用 secrets.choice() 替代 random.choice()

✅ 示例 3:抽奖程序

participants = ["Alice", "Bob", "Charlie", "David", "Eve"]
winner = random.choice(participants)
print("恭喜获奖者:", winner)

💡 六、小技巧:格式化输出

在打印随机结果时,推荐使用 f-string 进行格式化输出,简洁又直观:

print(f"你摇到的点数是:{roll_dice()}")

📚 七、总结

函数名功能
random.random()生成 0~1 的浮点数
random.randint(a, b)生成 a~b 的整数
random.choice(seq)从序列中随机选一个元素
random.sample(seq, k)从序列中随机选 k 个不重复元素
random.shuffle(seq)打乱序列顺序
random.seed(n)设置随机种子

🙋‍♂️ 写在最后

random 模块是 Python 中最实用的标准库之一,适用于游戏开发、数据采样、模拟实验等多种场景。掌握它的使用,不仅能提高你的编程效率,也能让你写出更有趣、更有创意的程序。

如果你还有关于 random 模块的应用想法或疑问,欢迎留言讨论 😊


📌 喜欢这篇文章?欢迎点赞、收藏、转发! 📲 关注我,获取更多 Python 编程干货与实战技巧!

http://www.lqws.cn/news/527275.html

相关文章:

  • 49-有效的字母异位词
  • 设计模式精讲 Day 14:命令模式(Command Pattern)
  • Web基础关键_001_HTML(一)
  • docker环境下java参数传递与获取
  • FANUC机器人教程:用户坐标系标定及其使用方法
  • 学习永无止境
  • 程序的更新总结
  • 简易服务器(TCP)
  • 川翔云电脑全新上线:三维行业高效云端算力新选择
  • Kotlin环境搭建与基础语法入门
  • 鸿蒙边缘智能计算架构实战:多线程图像采集与高可靠缓冲设计
  • MIT 6.S081—环境配置和初步学习day01(VMware和Ubuntu安装)
  • Go 语言中的接口
  • 黑马ReactDay02
  • 《告别一换就崩:前端游戏物理引擎适配层设计哲学》
  • Vue样式绑定与条件渲染详
  • C++新纪元:深入C++11/14/17/20核心特性与名企面试精粹(完整版)--8000字硬核解析 | 腾讯/阿里/字节真题实战
  • 数据分享:交通数据-地铁乘坐站记录数据
  • 随记:WebMvcConfigurationSupport 和WebMvcConfigurer 的区别
  • 第4篇:响应处理——返回数据给客户端(Gin文件下载,JSON,XML等返回)
  • Vue-14-前端框架Vue之应用基础嵌套路由和路由传参
  • 51c~嵌入式~PLC~三菱~合集1
  • spring-ai 1.0.0 (1)模型调用能力
  • 高中成绩可视化平台开发笔记
  • 六个安全Agent设计模式:有效防止Prompt注入攻击
  • 城市综合管廊监测,智能化安全监测,多源感知,三维可视化监控
  • c++面向对象编程
  • 微积分 - 无穷小量
  • 数据分享:环境科学与公共健康行业-空气质量数据集
  • 汽车一键启动升级手机控车