サイコロ
Pythonを使ってサイコロを作りたいと思います。
サイコロって大人になると触れる機会ってないですよね。
我が家では先日サイコロを実家で発見して娘と遊んでます。
サイコロの定義
今回作るサイコロですが、1〜6までの整数の目が出るものとします。
早速コードを見てみましょう。
環境
macOS Ventura 13.0.1
Google Colaboratory
コード
import random
dice = random.randint(1,6)
print("サイコロの目は" + str(dice) +"です。")
これだけでサイコロは作れます。
まず初めに1行目ですが、
import random
ここでランダムモジュールをインポートします。
Pythonには標準ライブラリという便利な機能をまとめたものが
たくさん提供されています。
例えば数学の計算などを行う、 mathモジュールや
日付と時刻を扱う、 datetimeモジュールなどです。
詳しくはPythonの公式ドキュメントを参照して下さい。
2行目の
dice = random.randint(1,6)
diceという変数にrandint関数を使用して1〜6までの数字を入れてます。
randint関数とは、 randint(a,b) のように書き、aからbまでの間のランダムな整数を出力するという意味です。
3行目
print("サイコロの目は" + str(dice) +"です。")
print文で結果を出力しています。
サイコロは上記の通りですが、ここからはrandomモジュールでどんな動きを
しているのか見ていきたいと思います。
乱数
サイコロの動きの表現で使われるのが乱数です。
乱数とはランダムで適当な数字のことで、規則性のない数字のことです。
コードを実行して乱数を見てみましょう。
import random
for i in range(7):
print(random.random())
上記のコードを実行すると、
0.8646879206032319
0.36377500869900947
0.1498868135903768
0.8990674760488528
0.261696093620167
0.8415821457402218
0.8444125985859737
0〜1の間の小数が不規則に出力されたのが確認できました。
これが乱数です。
ここからrandint関数を使わずにサイコロに近づけていきます。
まず乱数を6倍して、0〜6未満の小数を作ります。
import random
for i in range(7):
print(random.random()*6)
出力結果
4.923039028651419
0.8848141251237571
2.8635824327216897
5.052957695964285
4.461501001097304
4.207258917169705
2.644129541013986
次に小数点を切り捨てるためにprint文をint型にします。
import random
for i in range(7):
print(int(random.random()*6))
出力結果
3
4
3
1
4
3
1
これでサイコロが完成したように見えますが、このままでは6は絶対に出てきません。
このままでは0〜6未満、つまり5以下なのです。
なので、最後に1を足して6まで出るようにします。
import random
for i in range(7):
print(int(random.random()*6)+1)
出力結果
1
6
3
1
4
5
1
これでrandint()関数を使わずにサイコロを作ることができました。
まとめ
今回は標準モジュールでサイコロを作ってみました。
今後は複数のサイコロを振ってみて、丁半を予想するものを作ってみたりもいいかなって思ってます。