Python 搞事情,想要点刺激?那就离不开 随机数。想想看,游戏里的怪物刷新,抽奖程序的幸运儿,甚至机器学习模型里的初始化权重,哪个不是随机数在背后默默支持?说白了,没有随机数,程序就少了点灵魂,缺了那么点不确定性带来的惊喜。

Python 里面 random 模块就是专门用来生成 随机数 的。它就像一个魔术盒子,你告诉它要什么样的 随机数,它就能变出来。最基础的,也是最常用的,就是 random.random()。 这个函数能生成一个 0.0 到 1.0 之间的随机浮点数,注意,是左闭右开区间,也就是说,包括 0.0,但不包括 1.0。

比如,你想要模拟抛硬币,正面朝上概率 50%,反面朝上也是 50%。就可以这么写:

“`python
import random

if random.random() < 0.5:
print(“正面朝上!”)
else:
print(“反面朝上!”)
“`

简单吧?但光有 random() 还不够,有些时候,我们需要整数,比如掷骰子。这时候,random.randint(a, b) 就派上用场了。这个函数会返回一个 ab 之间的随机整数,包括 ab。 举个例子,模拟掷一个六面骰子:

“`python
import random

dice_roll = random.randint(1, 6)
print(f”你掷出了:{dice_roll}”)
“`

如果你只需要从一个列表中随机选择一个元素,random.choice(seq) 就是你的好帮手。 seq 可以是列表,元组,字符串等等。 例如:

“`python
import random

colors = [“红色”, “绿色”, “蓝色”, “黄色”]
chosen_color = random.choice(colors)
print(f”幸运颜色是:{chosen_color}”)
“`

有时候,我们需要打乱一个列表的顺序,让列表里面的元素随机排列,那就要用到 random.shuffle(x) 了。这个函数会直接修改原列表,不会返回新的列表。 比如,洗扑克牌:

“`python
import random

poker = [“红桃A”, “黑桃K”, “方块Q”, “梅花J”]
random.shuffle(poker)
print(f”洗牌后的顺序:{poker}”)
“`

random.sample(population, k) 则可以从 population 中随机抽取 k 个独立的元素,返回一个新的列表。 原来的 population 不会被改变。 想象一下,从一堆人里面随机抽取几个人中奖:

“`python
import random

participants = [“张三”, “李四”, “王五”, “赵六”, “田七”, “周八”]
winners = random.sample(participants, 3)
print(f”恭喜以下中奖者:{winners}”)
“`

生成 随机数 还有个很重要的概念,叫做“随机数种子”(seed)。 默认情况下,每次运行程序,生成的 随机数 序列都是不同的。 但如果你设置了相同的随机数种子,那么每次运行程序,生成的随机数序列就会完全相同。

这有什么用呢? 最大的用处就是:可重复性。 调试程序,或者进行科学实验的时候,我们需要保证结果的可重复性。 否则,每次运行结果都不一样,还怎么分析问题? 使用 random.seed(a) 可以设置随机数种子。 a 可以是一个整数,也可以是一个字符串。

“`python
import random

random.seed(42) # 设置随机数种子为 42
print(random.random())
print(random.randint(1, 10))

random.seed(42) # 再次设置随机数种子为 42
print(random.random()) # 生成的随机数和第一次一样
print(random.randint(1, 10)) # 生成的随机数和第一次一样
“`

你瞧,只要种子一样,生成的 随机数 就一模一样。

另外,random 模块其实并不是真正的“随机”,它生成的是伪随机数。 也就是说,它通过一个算法来模拟 随机数,并不是真正的物理随机。 但对于绝大多数的应用场景来说,伪随机数已经足够用了。 如果你需要更高质量的 随机数,可以考虑使用 secrets 模块。 这个模块是专门用来生成密码学安全的 随机数 的。 但一般来说,我们很少用到它。

关于 Python随机数,我觉得最有趣的地方在于,它能让程序变得更加生动,更加不可预测。 这种不确定性,也正是编程的魅力所在。 无论是开发游戏,还是做数据分析,掌握 随机数 的使用,都能让你的程序更加强大,更加有趣。 记住,要灵活运用 random 模块里面的各种函数,根据实际需求选择合适的 随机数 生成方法,还要善用随机数种子,保证结果的可重复性。 掌握了这些技巧,你就能在 Python 的世界里玩转 随机数,创造出更多精彩的应用!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。