Coding for KidsCoding for Kids
クリエイティブレベル挑戦教師ガイド
機能に投票
上級Python開発コース
チャプター
>
レベル

数学モジュール
ランダムモジュール

目的

random モジュールを使用してシミュレーションとテストを実行し、農場建設中のエラーや遅延に備えます。

付属棟を横切ると、建設のための輸送、住宅、物流に関する書類仕事を扱う管理事務所があります。利用可能なデータを用いていくつかのシナリオを実行し、遅延や機材の故障を計算するのは良いアイデアです。これを支援するために、import random で有効化される random モジュールを使用します。

このモジュールは様々な程度のランダムな出力を生成するために使用され、シミュレーションの実行や計算・演習にランダムな要素を追加することができます。ここでは以下の関数を使用します:

  • random.seed(): ランダム生成のシードを設定します。引数として使用したいシード番号を一つ受け取ります。つまり、与えられたシードで使用されるどのランダム関数も同じ結果を返すため、ランダム生成に対してある程度の制御が可能となり、特定の結果を再現することができます。
  • random.random(): 01 の間のランダムな浮動小数点数を返します。
  • random.randint(): 2 つの引数を取り、その間の数値(両端を含む)を生成します。結果は整数で返されます。
  • random.uniform(): 前の関数と同様ですが、整数の代わりにランダムな浮動小数点数を返します。
  • random.triangular(): 前の関数と同様ですが、mode と呼ばれる追加の修正子引数があります。mode はランダム範囲の2つの数値の間の値でなければなりません。生成されるランダムな数値は、最初の2つの引数の間の純粋なランダムな数値よりも、統計的に mode に近い数値になります。
  • random.choice(): リストを引数として取り、そのリストからランダムに1つのアイテムを選びます。
  • random.choices(): あるリストからサンプリングしてランダムなリストを生成します。3 つの引数を取ります。サンプリング元のリスト、各項目からどの程度の重みでサンプリングを行うかを示す別のリスト、最後にサンプリング単位の数を指定する変数 k です。サンプリング単位の数はリストの長さを超えてもよく、指定した重みに基づいて重複が生成されます。
  • random.shuffle(): リストを引数として取り、そのリストをランダムにシャッフルします。
  • random.sample(): リストからサンプリングするサンプルの数を示す2つの引数を取り、random.choices() の簡略化版です。

まず、ライトの X マークの場所に歩いて行き、デスクに向かってください。read() 関数を使用してメモを読み、シミュレーションに必要なデータポイントを特定しましょう。ここでは機材故障のシミュレーションを行います。メモにはランダム生成に使用する seed と、サンプリング元のリストについて記載されています。メモに提供された値を引数として random.seed() 関数を使用してください。

青いカーペットの上にあるダークの X マークに歩いて行き、デスクに向かってください。前のメモに記載された農場の区域を含む定数リスト sectors があります。random.choice() の値を格納するために変数 selection を作成し、リスト定数 sectors を使用してサンプルを取得してください。例: selection = random.choice(sectors) 。次に、delay という変数を作成し、random.random() の値を格納して、遅延による誤差のマージンをシミュレーションします。

さらに、defect という変数を作成し、random.randint() の値を格納して、機材故障の可能性のパーセンテージを生成します。引数として 015 を追加し、これらの間のパーセンテージを生成します。selectiondelaydefect の各変数が設定されたら、あらかじめ用意された write() 関数をこれら3 つの変数の順序で使用し、建設における潜在的な問題をテストするために使用できるデータポイントを記録してください。

ゴールドの X マークに歩いて行き、read() 関数を使用して、更なる見通しを進めます。メモには材料、数量、サンプリングデータが含まれています。ここでは、メモに記載された定数リスト materials を含む、より大規模なシミュレーションを行います。

赤いカーペットの上にあるダークの X マークに歩いて行き、デスクに向かってください。weights というリストを作成し、メモに記載されている4 つの数値を、表示されている順番に対応させて格納します。例: weights = [400, 600 , -insert value-, -insert value-]

simulation という変数を作成し、random.choices() の値を格納してください。ここでは、materials リスト定数、先ほど作成した weights リスト、そして k という名前のリスト(メモで示されたサンプリング単位)を引数として渡します。例: simulation = random.choices(materials, weights , k = insert sampling units ) 。あらかじめ用意された write() 関数を使用して、simulation 変数のデータを記録してください。

緑のカーペットの上にあるダークの X マークに歩いて行き、デスクに向かってください。random.shuffle() 関数を、作成した simulation リストに対して使用してシャッフルします。例: random.shuffle(simulation) 。この関数はリストを直接変更するため、戻り値を格納する必要はありません。次に、sample というリストを作成し、random.sample() の値を格納してください。最初の引数として simulation リストを指定し、2 番目の引数としてサンプリング数 3 を指定し、例: sample = random.sample(simulation, k=3) とします。あらかじめ用意された write() 関数を使用して、simulationsample の両方のデータを記録してください。

最後に、紫のカーペットの上にあるダークの X マークに歩いて行き、デスクに向かってください。defect という変数を作成し、random.uniform() の結果を格納してください。引数として 310 を追加します。これらは、元のシミュレーションとそれからサンプリングされたサンプルのサンプリング値であり、これを使用してサンプルからの潜在的な機材不良マージンを生成します。

さらに、losses という変数を作成し、random.triangular() の値を格納してください。引数として 200600400 を追加します。これらは前のメモに記載された材料数、すなわち最も低い値、最も高い値、そして中間に最も近い値です。これにより、シミュレーションで使用された材料の数に基づいた三角分布のランダムな値を取得できます。あらかじめ用意された write() 関数を defectlosses の値と共に使用して結果を記録し、レベルを完了してください。

コードブック