【貂蝉がプログラミングを学ぶ】MicroPythonマニュアルの組み込みモジュールrandom:乱数生成

ここに画像の説明を挿入します

MicroPython は、組み込みシステムで Python 3 プログラミング言語を実行するために設計されたインタープリターの軽量バージョンです。通常の Python と比較して、MicroPython インタープリターは小さく (わずか約 100 KB)、バイナリの実行可能ファイルにコンパイルされて実行されるため、実行効率が高くなります。軽量のガベージ コレクション メカニズムを使用し、リソースに制約のあるマイクロコントローラーに対応するために Python 標準ライブラリの大部分を削除します。

MicroPython の主な機能は次のとおりです。
1. 構文と関数は標準の Python と互換性があるため、学習と使用が簡単です。Python のコア構文のほとんどがサポートされています。
2. ハードウェアに直接アクセスして制御し、Arduino のように GPIO、I2C、SPI などを制御します。
3.ファイルシステム、ネットワーク、グラフィカルインターフェースおよびその他の機能を提供する強力なモジュールシステム。
4. クロスコンパイルをサポートし、インタプリタよりも 10 ~ 100 倍高速な効率的なネイティブ コードを生成します。
5. コード量が少なくメモリ使用量も少ないため、メモリの少ない MCU や開発ボードでの実行に適しています。
6. オープンソースライセンス、無料で使用できます。シェル対話型環境は、開発とテストに便利です。
7. 内蔵 I/O ドライバーは、ESP8266、ESP32、STM32、micro:bit、コントロール ボード、PyBoard などの多数のマイクロコントローラー プラットフォームをサポートします。活発なコミュニティがあります。

MicroPython のアプリケーション シナリオには次のものが含まれます。
1. 組み込み製品のプロトタイプとユーザー インタラクションを迅速に構築します。
2. 小さなプログラム可能なハードウェア プロジェクトをいくつか作成します。
3. 初心者がPythonやIoTプログラミングを学ぶのに役立つ教育ツールとして。
4. 高度な制御とクラウド接続のためのスマート デバイス ファームウェアを構築します。
5. モノのインターネット、組み込みインテリジェンス、ロボットなどのさまざまなマイクロコントローラー アプリケーション

MicroPython を使用する際の注意事項:
1. メモリとフラッシュのスペースには限りがあります。
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. シード(n=None) メソッドを使用して乱数ジェネレータを初期化できます。パラメータがない場合、またはパラメータが None の場合、実際の乱数 (サポートされている場合) がシードとして使用されます。

ランダム モジュールのアプリケーション シナリオには次のものが含まれます。

1. コイン投げ、サイコロ振り、宝くじなど、確率や統計に関連する計算やシミュレーションを実行するために使用されます。
2. パスワード生成、確認コード生成、ゲームデザインなど、ランダム化された機能や効果を実装するために使用されます。
3. 擬似乱数、シード、分布など、乱数に関連する知識やスキルを学習または指導するために使用されます。

ランダム モジュールに関する注意事項は次のとおりです。

1. ランダム モジュールは CPython モジュール 1 のサブセットを実装しており、32 ビット整数 1 のみをサポートしているため、CPython の機能およびパフォーマンスと完全な互換性はありません。
2. ランダム モジュールは、アルゴリズムとシードに基づく決定論的乱数生成器 1 である擬似乱数生成器 (PRNG) を使用するため、そのランダム性と安全性は保証できません。より高品質の乱数が必要な場合は、os.urandom() メソッド 2 を使用して真にランダムなバイトを生成できます。
3. ランダム モジュールによって使用されるコールバック関数は、割り込みコンテキスト 1 で実行されます。システムのパフォーマンスと安定性に影響を与えないように、複雑な操作や時間のかかる操作の実行を避けるために、コールバック関数はできるだけ短く高速である必要があります。

以下に、MicroPython の組み込みモジュール Random の実用的なアプリケーション例をいくつか示します。

ケース 1:random() メソッドを使用して、範囲 [0.0, 1.0) の 10 個のランダムな浮動小数点数を生成し、結果を出力します。

# 导入random模块
import random

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

ケース 2: Choice() メソッドを使用して、リストから要素をランダムに選択し、結果を出力します。

# 导入random模块
import random

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

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

# 打印结果
print(c)

ケース 3: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)

ケース 4: ランダムな整数を生成する:

import random

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

この例では、random モジュールの randint() 関数を使用して、1 ~ 10 の範囲のランダムな整数を生成します。次に、生成されたランダムな整数を出力します。

ケース 5: リストから要素をランダムに選択します。

import random

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

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

この例では、random モジュールの Choice() 関数を使用して、リストから要素をランダムに選択します。フルーツリストのフルーツを定義し、choice() 関数を使用してランダムなフルーツを選択します。最後に、選択したランダムなフルーツを出力します。

ケース 6: リストの順序を乱す:

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() 関数を使用して、リストの順序をシャッフルします。トランプのリストを定義し、shuffle() 関数を使用してカードの順序をランダムにシャッフルします。最後に、シャッフルされたカードの順序を出力します。これらの実用的なアプリケーション例は、MicroPython の組み込みランダム モジュールを使用する機能を示しています。Random モジュールを使用すると、ランダムな整数を生成したり、リストから要素をランダムに選択したり、リストの順序をシャッフルしたりできます。これらの機能は、ゲーム、ランダム化されたデータ、模擬実験などのシナリオで役立ちます。

ケース 7: 乱数を生成する

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 モジュールを使用して乱数を生成する方法を示します。

ケース 8: ランダム シャッフル

import random

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

# 随机洗牌
random.shuffle(cards)

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

この例では、ランダム モジュールをインポートし、それを使用してランダム シャッフル操作を実行します。カードの順序付きリストを作成し、shuffle() 関数を使用してリストをシャッフルします。最後に、シャッフルされたリストを出力し、ランダム シャッフルの効果を示します。

ケース 9: ランダムなパスワードを生成する

import random
import string

# 定义密码长度
password_length = 8

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

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

この例では、ランダム モジュールと文字列モジュールをインポートし、それらを使用してランダム パスワードを生成しました。最初にパスワードのpassword_lengthの長さを定義し、次にリストの内包表記とjoin()関数を使用して、指定された長さのランダムなパスワードを生成します。リスト内包表記では、選択された文字セットとして文字と数字のセット string.ascii_letters + string.digitals を取得し、random.choice() 関数を使用して文字セットから文字をランダムに選択し、そのパスワードを繰り返し生成します。指定された長さ。最後に、生成されたランダムなパスワードを出力します。

これらの例は、MicroPython のランダム モジュールの実際的な使用法を示しています。ランダム モジュールは、乱数の生成、カードのランダムなシャッフル、ランダムなパスワードの生成などの機能を提供します。Random モジュールを使用すると、MicroPython でさまざまなランダム化関数を実装できます。

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_41659040/article/details/132775851