Python3 - random
randomを試してみます。
下記をやってみます。100回randintを0~100まででやってみます。
import numpy as npimport randomimport matplotlib.pyplot as plt
arr = np.zeros([100])for _ in range(100): a = random.randint(1, 100) arr[a - 1] += 1x = 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.05236359885094432611random.seed(123)print(random.random())print(random.randint(0, 100))
a = random.random()print(a)b = 0cnt = 0for i in range(5): b = random.random() if a != b: cnt += 1 print(b)print(cnt)
a = random.random()print(a)b = 0cnt = 0for i in range(5): b = random.random() if a != b: cnt += 1 print(b)print(cnt)何回やっても下記でした。
0.052363598850944326110.76895638858707070.266553812531383550.83850351647435770.87482574610526610.37912433248908840.562318714947981450.340798227877070150.051901654598581760.13505745930386070.56096200893667620.70168978903564330.163776844752360435seedが同じだと、プログラムを実行する度に、まったく同じ数字が同じ順番ででてくる。
60%の確率で正解を出す機械をつくってみます。 random.random()が0.6以内だったら当たりにします。
per = 0.6cnt = 5results = np.zeros([100])
for i in range(100): ok = 0 for _ in range(cnt): if random.random() <= per: ok += 1 results[i] = ok / cntprint(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