Python random 模块完全指南
专为编程初学者设计的随机数生成知识汇总
random.random()
这是什么?
生成一个0到1之间的随机小数(包含0,但不包含1)。就像在0和1之间扔飞镖,落在任意位置的概率都一样。
怎么用?
应用场景
当你需要简单的随机性时使用,比如模拟抛硬币(小于0.5算正面)、随机选择是否执行某个操作等。
重要程度: ★★★★★(最基础)
random.randint(a, b)
这是什么?
生成一个整数N,a ≤ N ≤ b(包含两端的a和b)。就像掷一个有a到b面的骰子。
怎么用?
应用场景
游戏开发(骰子、抽奖)、随机选择数组索引、生成指定范围的随机整数。
重要程度: ★★★★★(最常用)
random.choice(seq)
这是什么?
从一个非空序列(如列表、元组、字符串)中随机选择一个元素。就像从一个盒子里随机摸一个球出来。
怎么用?
应用场景
随机抽奖、从多个选项中选择、生成随机名称或单词、AI的随机决策等。
重要程度: ★★★★★
random.shuffle(seq)
这是什么?
将序列中的元素随机重新排列(打乱顺序)。就像洗扑克牌一样。
怎么用?
注意事项
这个方法会直接修改原始列表,而不是返回一个新列表。原始顺序会丢失!
重要程度: ★★★★☆
random.uniform(a, b)
这是什么?
生成一个指定范围内的随机浮点数(小数),a ≤ N ≤ b(包含两端)。
怎么用?
与 randint 的区别
randint() 生成整数,uniform() 生成小数。uniform() 的精度更高,适用于需要更精细随机数的场景。
重要程度: ★★★☆☆
random.sample(population, k)
这是什么?
从一个序列中随机选择k个不重复的元素。就像抽奖时从抽奖箱中抽出多个不重复的获奖者。
怎么用?
注意事项
k值不能大于序列长度,否则会报错。结果中的元素不会重复。
重要程度: ★★★★☆
重要提示与最佳实践
随机种子(random.seed):使用random.seed()可以设置随机数生成器的种子值。相同的种子会产生相同的随机数序列,这在需要可重复的实验结果时非常有用。
安全警告:random模块生成的随机数不适合密码学用途!如果需要安全随机数(如生成密码),请使用secrets模块。
性能考虑:对于大量随机数生成,使用NumPy的随机模块会更高效。但random模块对于大多数日常任务已经足够好。
新手建议:先掌握random(), randint()和choice()这三个最基本函数,它们能满足80%的日常需求。熟练后再学习其他函数。