メインコンテンツへスキップ
見出し画像
Photo byomori55

Python でサイコロをモデル化する

     乱数がどんなものかは、理屈よりも何よりも、使ってみるのが一番です。
     次のコードの1行目だけ説明しましょう。これは「乱数の機能」(random module)を読み込む(import)ためのものです。この1行を書くことで、乱数が使えるようになるというわけです。

    import random
    for i in range(5):
        print(random.random())

     何はともあれやってみれば、0と1の間の小数が不規則にかつバランス良く現れることが確認できるでしょう。それが乱数です。

    0.9427618585063577
    0.5611490792296376
    0.8911970382812515
    0.05940191667247974
    0.8615583440385428

     これをサイコロの目に近づけていきましょう。まず、乱数を6倍します。

    import random
    for i in range(5):
        print(random.random()*6)

     そうすると、0から6未満の小数になります。

    1.0377595424277226
    2.3320306170187055
    1.8151776917602231
    5.211928132308686
    3.2278197556728006

     続いてその値を整数値にします。このとき小数点以下は切り捨てられて0から5までの整数になります。

    import random
    for i in range(5):
        print(int(random.random()*6),end='')

     ここではついでに、数字を表示した後に改行しないようにしました。表示する行数を節約するためです。print 文の末尾の「,end=''」がそのためのコードです。

    53103

     そこに1を足せば、1〜6の整数がバランス良く出ることになります。これでサイコロのモデル化、完成です。

    import random
    for i in range(5):
        print(int(random.random()*6)+1,end=' ')

     あわせて、改行せずに横に横に表示するのに加えて、数と数の間に1文字の空白を空けました。print 文中で先ほどまでは「,end=''」だったところ、そこにスペースを入れて「,end=' '」としました。これでいくらか見やすくなるでしょう。

    1 6 3 6 1 

     ところで、実は Python には整数値の乱数を発生させる機能があらかじめ用意されています。書式は「random.randint(a,b)」で整数 a から整数 b までの整数がバランス良く発生します。これを使っても良いです。

    import random
    for i in range(5):
        print (random.randint(1,6),end=' ')

    ※ 「randint」とは random(乱数的)な integer(整数)という意味です。random モジュールに含まれる機能だから「random.randint」と表記します。

    1 3 2 6 4

     サイコロのモデル化が出来たところで、シミュレーションはまだまだ続きます。次にさらに何回もサイコロを振って、1〜6の目が出た回数を数えましょう。そこからまたいろんなことが見えてきます。(→ こちら をどうぞ)

    ◇      ◇      ◇

    〜 Python でサイコロを振ってみる 〜 
    ▷ Python でサイコロをモデル化する 
    ▷ サイコロでばらつき具合を体感する
    ▷ サイコロで正規分布を描け    

     
     
    情報科・数学科教員にして   作家・旅人・芸人 AI評論家・火山ハンター

    あなたへのおすすめ