【雕爷学编程】MicroPython手册之内置模块 random:随机数生成

在这里插入图片描述

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。

在这里插入图片描述
MicroPython的内置模块random是一个用于生成随机数的模块,它可以用来在一定范围或序列中产生随机的整数或浮点数。它的主要特点是:

1、它可以使用random()方法返回一个[0.0, 1.0)区间内的随机浮点数。
2、它可以使用getrandbits(n)方法返回一个n位的随机整数(0 <= n <= 32)。
3、它可以使用uniform(a, b)方法返回一个[a, b]区间内的随机浮点数。
4、它可以使用randrange(stop)、randrange(start, stop)或randrange(start, stop, step)方法返回一个指定范围和步长的随机整数。
5、它可以使用randint(a, b)方法返回一个[a, b]区间内的随机整数。
6、它可以使用choice(sequence)方法从一个序列中随机选择一个元素。
7、它可以使用seed(n=None)方法初始化随机数生成器,如果没有参数或参数为None,则使用真正的随机数(如果支持)作为种子。

random模块的应用场景有:

1、用于进行一些概率或统计相关的计算或模拟,例如抛硬币,掷骰子,抽奖等。
2、用于实现一些随机化的功能或效果,例如密码生成,验证码生成,游戏设计等。
3、用于学习或教授一些随机数相关的知识或技巧,例如伪随机数,种子,分布等。

random模块的注意事项有:

1、random模块实现了CPython模块的一个子集1,并且只支持32位整数1,因此不能完全兼容CPython的功能和性能。
2、random模块使用了一个伪随机数生成器(PRNG),它是一种基于算法和种子的确定性的随机数生成器1,因此不能保证其随机性和安全性。如果需要更高质量的随机数,可以使用os.urandom()方法2来生成真正的随机字节。
3、random模块使用的回调函数是在中断上下文中执行1,需要尽量简短和快速,避免执行复杂或耗时的操作,以免影响系统性能和稳定性。

以下是MicroPython的内置模块random几个实际运用程序案例:

案例一:使用random()方法生成10个[0.0, 1.0)区间内的随机浮点数,并打印结果

# 导入random模块
import random

# 循环10次
for i in range(10):
    # 调用random()方法,并返回一个[0.0, 1.0)区间内的随机浮点数
    r = random.random()
    # 打印结果
    print(r)

案例二:使用choice()方法从一个列表中随机选择一个元素,并打印结果

# 导入random模块
import random

# 创建一个列表对象,包含一些元素
l = ['apple', 'banana', 'cherry', 'durian', 'elderberry']

# 调用choice()方法,并从列表中随机选择一个元素
c = random.choice(l)

# 打印结果
print(c)

案例三:使用seed()方法和randint()方法实现一个简单的猜数字游戏

# 导入random模块
import random

# 使用当前时间作为种子初始化随机数生成器
random.seed()

# 生成一个[1, 100]区间内的随机整数作为答案
answer = random.randint(1, 100)

# 设置猜测次数为10
guesses = 10

# 打印欢迎信息和提示信息
print('Welcome to the guess the number game!')
print('I have chosen a number between 1 and 100.')
print('You have 10 chances to guess it.')

# 循环猜测
while guesses > 0:
    # 获取用户的输入,并转换为整数
    guess = int(input('Please enter your guess: '))
    # 如果猜对了,打印恭喜信息并结束游戏
    if guess == answer:
        print('Congratulations! You guessed it!')
        break
    # 如果猜错了,打印提示信息并减少猜测次数
    else:
        # 如果猜大了,打印太大的提示
        if guess > answer:
            print('Too high.')
        # 如果猜小了,打印太小的提示
        else:
            print('Too low.')
        # 减少猜测次数
        guesses -= 1
        # 如果还有剩余次数,打印剩余次数
        if guesses > 0:
            print('You have', guesses, 'chances left.')
# 如果用完了所有次数,打印失败信息和答案
else:
    print('Sorry, you ran out of chances.')
    print('The answer was', answer)

案例四:生成随机整数:

import random

# 生成一个范围在1到10之间的随机整数
random_int = random.randint(1, 10)
print("Random Integer:", random_int)

在这个示例中,我们使用random模块的randint()函数生成一个范围在1到10之间的随机整数。然后,我们打印出生成的随机整数。

案例五:从列表中随机选择元素:

import random

# 定义一个列表
fruits = ["apple", "banana", "orange", "mango", "kiwi"]

# 从列表中随机选择一个元素
random_fruit = random.choice(fruits)
print("Random Fruit:", random_fruit)

在这个示例中,我们使用random模块的choice()函数从一个列表中随机选择一个元素。我们定义了一个水果列表fruits,然后使用choice()函数选择一个随机的水果。最后,我们打印出选择的随机水果。

案例六:打乱列表的顺序:

import random

# 定义一个列表
cards = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]

# 打乱列表的顺序
random.shuffle(cards)
print("Shuffled Cards:", cards)

在这个示例中,我们使用random模块的shuffle()函数打乱一个列表的顺序。我们定义了一个扑克牌的列表cards,然后使用shuffle()函数随机打乱牌的顺序。最后,我们打印出打乱后的牌的顺序。这些实际运用程序案例展示了使用MicroPython内置模块random的功能。通过使用random模块,可以生成随机整数,从列表中随机选择元素,以及打乱列表的顺序。这些功能在游戏、随机化数据和模拟实验等场景中非常有用。

案例七:生成随机数

import random

# 生成一个随机整数
random_int = random.randint(1, 10)
print("随机整数:", random_int)

# 生成一个随机浮点数
random_float = random.uniform(0.0, 1.0)
print("随机浮点数:", random_float)

# 从列表中随机选择一个元素
fruits = ["apple", "banana", "orange", "grape"]
random_fruit = random.choice(fruits)
print("随机水果:", random_fruit)

在这个例子中,我们导入了 random 模块,并使用它生成随机数。首先,我们使用 randint() 函数生成一个指定范围内的随机整数,然后将结果打印出来。接下来,我们使用 uniform() 函数生成一个指定范围内的随机浮点数,并将结果打印出来。最后,我们使用 choice() 函数从列表中随机选择一个元素,并将结果打印出来。这个例子展示了如何使用 random 模块生成随机数。

案例八:随机洗牌

import random

# 创建一个有序列表
cards = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]

# 随机洗牌
random.shuffle(cards)

# 打印洗牌后的列表
print("洗牌后的列表:", cards)

在这个例子中,我们导入了 random 模块,并使用它进行随机洗牌操作。我们创建了一个有序的扑克牌列表 cards,然后使用 shuffle() 函数对列表进行随机洗牌。最后,我们打印洗牌后的列表,展示了随机洗牌的效果。

案例九:生成随机密码

import random
import string

# 定义密码长度
password_length = 8

# 生成随机密码
password = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(password_length))

# 打印随机密码
print("随机密码:", password)

在这个例子中,我们导入了 random 模块和 string 模块,并使用它们生成随机密码。我们首先定义了密码的长度 password_length,然后使用列表推导式和 join() 函数生成一个指定长度的随机密码。在列表推导式中,我们将字母和数字的集合 string.ascii_letters + string.digits 作为选择的字符集,然后使用 random.choice() 函数从字符集中随机选择字符,并重复生成指定长度的密码。最后,我们打印生成的随机密码。

这些示例展示了在 MicroPython 中使用 random 模块的实际应用。random 模块提供了生成随机数、随机洗牌和生成随机密码等功能。通过利用 random 模块,你可以在 MicroPython 中实现各种随机化的功能。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值