随机的

有时,您希望让事情顺其自然,或者将其混为一谈:您希望设备随机运行。

MicroPython 带有一个 random 模块,可以轻松地将偶然性和一些混乱引入您的代码中。例如,以下是在显示屏上滚动随机名称的方法:

from microbit import *
import random

names = ["Mary", "Yolanda", "Damien", "Alia", "Kushal", "Mei Xiu", "Zoltan" ]

display.scroll(random.choice(names))

列表 (names) 包含定义为字符串的七个名称。最后一行是嵌套的(前面介绍的“洋葱”效应):该 random.choice 方法将 names列表作为参数并返回随机选择的项目。此项(随机选择的名称)是 的参数display.scroll

您可以修改列表以包含您自己的一组名称吗?

随机数

随机数非常有用。它们在游戏中很常见。为什么我们还有骰子?

MicroPython 附带了几种有用的随机数方法。以下是制作简单骰子的方法:

from microbit import *
import random

display.show(str(random.randint(1, 6)))

每次重置设备时,它都会显示一个 1 到 6 之间的数字。您开始熟悉nesting,因此请务必注意, random.randint返回两个参数之间的整数(包括整数)(整数也称为整数) - 因此是方法的名称)。请注意,因为display.show需要一个字符,所以我们使用该 str 函数将数值转换为一个字符(例如,我们将其 6 转换为"6")。

如果你知道你总是想要一个数字0N 然后使用该 random.randrange方法。如果给它一个参数,它将返回随机整数,最多但不包括参数的值 N (这与 的行为不同random.randint)。

有时您需要带有小数点的数字。这些称为 浮点数,可以使用该 random.random方法生成这样的数字 。这仅返回介于0.0 和之间的值 1.0。如果你需要较大的随机浮点数加的结果random.randrangerandom.random 这样的:

from microbit import *
import random

answer = random.randrange(100) + random.random()
display.scroll(str(answer))

混沌种子

计算机使用的随机数生成器并不是真正随机的。在给定起始种子值的情况下,他们只是给出随机的结果。种子通常由随机值生成,例如当前时间和/或来自传感器(例如内置于芯片的温度计)的读数。

有时您希望具有可重复的随机行为:可重复的随机源。这就像说每次掷骰子时都需要相同的五个随机值。

这很容易通过设置种子值来实现。给定一个已知的种子,随机数生成器将创建相同的随机数集。种子设置为random.seed和 任何整数(整数)。这个版本的骰子程序总是产生相同的结果:

from microbit import *
import random

random.seed(1337)
while True:
    if button_a.was_pressed():
        display.show(str(random.randint(1, 6)))

你能弄清楚为什么这个程序需要我们按下按钮 A 而不是像第一个骰子示例中那样重置设备..?