[Diaoye aprende programación] Módulo incorporado aleatorio del manual de MicroPython: generación de números aleatorios

Insertar descripción de la imagen aquí

MicroPython es una versión ligera del intérprete diseñada para ejecutar el lenguaje de programación Python 3 en sistemas integrados. En comparación con Python normal, el intérprete de MicroPython es pequeño (solo alrededor de 100 KB) y se compila en un archivo ejecutable binario para su ejecución, lo que resulta en una mayor eficiencia de ejecución. Utiliza un mecanismo de recolección de basura liviano y elimina la mayor parte de la biblioteca estándar de Python para adaptarse a microcontroladores con recursos limitados.

Las características principales de MicroPython incluyen:
1. La sintaxis y las funciones son compatibles con Python estándar, lo que facilita su aprendizaje y uso. Admite la mayoría de la sintaxis principal de Python.
2. Acceda y controle directamente el hardware, controle GPIO, I2C, SPI, etc. como Arduino.
3. Potente sistema de módulos, que proporciona sistema de archivos, red, interfaz gráfica y otras funciones.
4. Admite compilación cruzada para generar código nativo eficiente, que es entre 10 y 100 veces más rápido que el intérprete.
5. La cantidad de código es pequeña y el uso de memoria es pequeño, adecuado para ejecutarse en MCU y placas de desarrollo con poca memoria.
6. Licencia de código abierto, de uso gratuito. El entorno interactivo de Shell proporciona comodidad para el desarrollo y las pruebas.
7. El controlador de E/S incorporado admite una gran cantidad de plataformas de microcontroladores, como ESP8266, ESP32, STM32, micro:bit, placa de control y PyBoard, etc. Hay una comunidad activa.

Los escenarios de aplicación de MicroPython incluyen:
1. Crear rápidamente prototipos e interacciones de usuario para productos integrados.
2. Realice algunos pequeños proyectos de hardware programables.
3. Como herramienta educativa, ayuda a los principiantes a aprender programación en Python e IoT.
4. Cree firmware para dispositivos inteligentes para lograr control avanzado y conectividad en la nube.
5. Diversas aplicaciones de microcontroladores como Internet de las cosas, inteligencia integrada, robots, etc.

Cosas a tener en cuenta al utilizar MicroPython:
1. La memoria y el espacio Flash son limitados.
2. La eficiencia de explicación y ejecución no es tan buena como la del lenguaje C.
3. Algunas funciones de la biblioteca son diferentes a las de la versión estándar.
4. Optimice la sintaxis de la plataforma y corrija las diferencias con el Python estándar.
5. Uso razonable de los recursos de memoria para evitar la asignación frecuente de grandes bloques de memoria.
6. Utilice código nativo para mejorar el rendimiento de partes clave de la velocidad.
7. Utilice adecuadamente la abstracción para encapsular las operaciones de hardware subyacentes.

En términos generales, MicroPython lleva Python al campo de los microcontroladores, lo cual es una innovación importante que no solo reduce el umbral de programación sino que también proporciona buenas capacidades de control de hardware. Es muy adecuado para el desarrollo de diversos Internet de las cosas y hardware inteligente.

Insertar descripción de la imagen aquí
El módulo aleatorio integrado de MicroPython es un módulo para generar números aleatorios, que se puede utilizar para generar números enteros aleatorios o números de punto flotante en un determinado rango o secuencia. Sus principales características son:

1. Puede utilizar el método random() para devolver un número de punto flotante aleatorio en el intervalo [0.0, 1.0).
2. Puede utilizar el método getrandbits(n) para devolver un entero aleatorio de n bits (0 <= n <= 32).
3. Puede utilizar el método uniforme (a, b) para devolver un número de punto flotante aleatorio en el rango [a, b].
4. Puede utilizar el método randrange(stop), randrange(start, stop) o randrange(start, stop, step) para devolver un número entero aleatorio que especifique el rango y el tamaño del paso.
5. Puede utilizar el método randint(a, b) para devolver un número entero aleatorio en el rango [a, b].
6. Puede utilizar el método de elección (secuencia) para seleccionar aleatoriamente un elemento de una secuencia.
7. Puede utilizar el método semilla (n = Ninguno) para inicializar el generador de números aleatorios. Si no hay ningún parámetro o el parámetro es Ninguno, se utiliza un número aleatorio real (si se admite) como semilla.

Los escenarios de aplicación del módulo aleatorio son:

1. Se utiliza para realizar algunos cálculos o simulaciones relacionadas con la probabilidad o la estadística, como lanzamiento de moneda, lanzamiento de dados, lotería, etc.
2. Se utiliza para realizar algunas funciones o efectos aleatorios, como generación de contraseñas, generación de códigos de verificación, diseño de juegos, etc.
3. Se utiliza para aprender o enseñar algunos conocimientos o habilidades relacionados con números aleatorios, como números pseudoaleatorios, semillas, distribución, etc.

Las precauciones para el módulo aleatorio son:

1. El módulo aleatorio implementa un subconjunto del módulo CPython1 y solo admite enteros de 32 bits1, por lo que no es totalmente compatible con las funciones y el rendimiento de CPython.
2. El módulo aleatorio utiliza un generador de números pseudoaleatorios (PRNG), que es un generador de números aleatorios determinista basado en algoritmos y semillas1, por lo que no se puede garantizar su aleatoriedad y seguridad. Si necesita números aleatorios de mayor calidad, puede utilizar el método 2 de os.urandom() para generar bytes verdaderamente aleatorios.
3. La función de devolución de llamada utilizada por el módulo aleatorio se ejecuta en el contexto de interrupción 1. Debe ser lo más breve y rápida posible y evitar operaciones complejas o que consuman mucho tiempo, para no afectar el rendimiento y la estabilidad del sistema.

Los siguientes son varios ejemplos de aplicaciones prácticas del módulo aleatorio integrado de MicroPython:

Caso 1: Utilice el método random() para generar 10 números de punto flotante aleatorios en el rango [0.0, 1.0) e imprima los resultados

# 导入random模块
import random

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

Caso 2: use el método Choice() para seleccionar aleatoriamente un elemento de una lista e imprimir el resultado

# 导入random模块
import random

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

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

# 打印结果
print(c)

Caso 3: utilice el método seed() y el método randint() para implementar un juego de adivinanzas de números simple

# 导入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)

Caso 4: Generar números enteros aleatorios:

import random

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

En este ejemplo, utilizamos la función randint() del módulo aleatorio para generar un número entero aleatorio en el rango de 1 a 10. Luego, imprimimos el número entero aleatorio generado.

Caso 5: Seleccionar aleatoriamente elementos de una lista:

import random

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

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

En este ejemplo, utilizamos la función Choice() del módulo aleatorio para seleccionar aleatoriamente un elemento de una lista. Definimos una lista de frutas y luego usamos la función Choice() para elegir una fruta al azar. Finalmente, imprimimos la fruta elegida al azar.

Caso 6: Mezclar el orden de la lista:

import random

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

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

En este ejemplo, usamos la función shuffle() del módulo aleatorio para mezclar el orden de una lista. Definimos una lista de naipes, cartas y luego usamos la función shuffle () para barajar aleatoriamente el orden de las cartas. Finalmente, imprimimos el orden de las cartas barajadas. Estos ejemplos de aplicaciones prácticas demuestran las capacidades de utilizar el módulo aleatorio integrado de MicroPython. Al utilizar el módulo aleatorio, puede generar números enteros aleatorios, seleccionar elementos aleatoriamente de una lista y mezclar el orden de la lista. Estas funciones son útiles en escenarios como juegos, datos aleatorios y experimentos simulados.

Caso 7: Generar números aleatorios

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)

En este ejemplo, importamos el módulo aleatorio y lo usamos para generar números aleatorios. Primero, usamos la función randint() para generar un número entero aleatorio dentro de un rango específico y luego imprimimos el resultado. A continuación, usamos la función uniform() para generar un número de punto flotante aleatorio dentro del rango especificado e imprimir el resultado. Finalmente, usamos la función Choice() para seleccionar aleatoriamente un elemento de la lista e imprimir el resultado. Este ejemplo muestra cómo utilizar el módulo aleatorio para generar números aleatorios.

Caso 8: barajado aleatorio

import random

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

# 随机洗牌
random.shuffle(cards)

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

En este ejemplo, importamos el módulo aleatorio y lo usamos para realizar una operación aleatoria. Creamos una lista ordenada de naipes, cartas y luego usamos la función shuffle() para barajar aleatoriamente la lista. Finalmente, imprimimos la lista aleatoria para mostrar el efecto de la mezcla aleatoria.

Caso 9: Generar una contraseña aleatoria

import random
import string

# 定义密码长度
password_length = 8

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

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

En este ejemplo, importamos el módulo aleatorio y el módulo de cadena y los usamos para generar contraseñas aleatorias. Primero definimos la longitud de la contraseña longitud_contraseña y luego usamos la función de comprensión de lista y unión () para generar una contraseña aleatoria de la longitud especificada. En la comprensión de la lista, usamos el conjunto de letras y números string.ascii_letters + string.digits como el conjunto de caracteres seleccionado, y luego usamos la función random.choice() para seleccionar aleatoriamente caracteres del conjunto de caracteres y generar repetidamente contraseñas de la longitud especificada. Finalmente, imprimimos la contraseña aleatoria generada.

Estos ejemplos muestran el uso práctico del módulo aleatorio en MicroPython. El módulo aleatorio proporciona funciones como generar números aleatorios, barajar cartas aleatoriamente y generar contraseñas aleatorias. Al utilizar el módulo aleatorio, puede implementar varias funciones de aleatorización en MicroPython.

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_41659040/article/details/132775851
Recomendado
Clasificación