随机的¶
有时,您希望让事情顺其自然,或者将其混为一谈:您希望设备随机运行。
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"
)。
如果你知道你总是想要一个数字0
,N
然后使用该
random.randrange
方法。如果给它一个参数,它将返回随机整数,最多但不包括参数的值 N
(这与 的行为不同random.randint
)。
有时您需要带有小数点的数字。这些称为 浮点数,可以使用该
random.random
方法生成这样的数字 。这仅返回介于0.0
和之间的值 1.0
。如果你需要较大的随机浮点数加的结果random.randrange
和 random.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 而不是像第一个骰子示例中那样重置设备..?