randomを試してみます。
下記をやってみます。100回randintを0~100まででやってみます。
import numpy as np import random import matplotlib.pyplot as plt arr = np.zeros([100]) for _ in range(100): a = random.randint(1, 100) arr[a - 1] += 1 x = np.arange(0, 100, 1) plt.plot(x, arr) plt.savefig('./img/rand.jpg')
結果
10000回やってみます。
100000回やってみます。
100万回やってみます。
seed設定してみます。
random.seed(123) print(random.random()) print(random.randint(0, 100))
何回やっても、下記でした。
0.052363598850944326 11
random.seed(123) print(random.random()) print(random.randint(0, 100)) a = random.random() print(a) b = 0 cnt = 0 for i in range(5): b = random.random() if a != b: cnt += 1 print(b) print(cnt) a = random.random() print(a) b = 0 cnt = 0 for i in range(5): b = random.random() if a != b: cnt += 1 print(b) print(cnt)
何回やっても下記でした。
0.052363598850944326 11 0.7689563885870707 0.26655381253138355 0.8385035164743577 0.8748257461052661 0.3791243324890884 0.5623187149479814 5 0.34079822787707015 0.05190165459858176 0.1350574593038607 0.5609620089366762 0.7016897890356433 0.16377684475236043 5
seedが同じだと、プログラムを実行する度に、まったく同じ数字が同じ順番ででてくる。
60%の確率で正解を出す機械をつくってみます。 random.random()が0.6以内だったら当たりにします。
per = 0.6 cnt = 5 results = np.zeros([100]) for i in range(100): ok = 0 for _ in range(cnt): if random.random() <= per: ok += 1 results[i] = ok / cnt print(results) print(results.mean())
結果
[ 0.2 0.6 0.8 0.8 0.6 0.4 0.8 0.6 1. 0.4 1. 0.4 0.8 0.6 0.4 0.8 0.6 0.6 0.6 1. 0.2 0.4 0.2 0.6 0.6 0.6 0.8 0.2 0.6 0.8 0.8 1. 0.6 0.6 0.4 0.4 0.4 0.6 0.6 0.8 1. 0.8 0.8 0.6 0.8 1. 0.4 0.6 0.6 0.8 0.8 0.6 0.8 1. 0.6 0.2 0.2 0.6 0.8 0.6 0.4 0.6 0.2 0.8 0.6 0.4 0.4 0.4 0.6 1. 0.4 0.8 0.4 0.6 0.6 0.6 0.4 0.4 0.6 0.6 0.8 0.4 0.6 0.2 0.6 0.6 0.8 0.8 0.6 0.4 1. 0.2 0.6 0.6 0.2 0.8 0.4 0.6 0. 0.6] 0.594