ガチャの確率と期待値をプログラミングで求める
import math import numpy as np def c_count(n, r): return math.factorial(n) // (math.factorial(r)*math.factorial(n - r)) def each_freq(x,y): freq = [] for i in range(y+1): tmp = c_count(y,i) * (x**i) * ((1-x)**(y-i))#0回当たり~ALL当たりまで、それぞれの確率を求める # print (((y-i))) freq.append(tmp) return freq def each_expect(freq):#期待値を求める return np.dot(freq,np.arange(0,len(freq),1)) x = 3#確率% y = 55# ~連続引いた場合 z = 50/11 #一回まわすのにひつような石 石/回す回数 freq = each_freq(x/100,y) all_expect= each_expect(freq) print ('排出率'+str(x)+('%でガチャを')) print (str(y)+('回まわしたとき')) print ('一体以上でる確率:'+str(100-freq[0]*100)+(' %')) print ('期待値:'+str(all_expect)+(' 駒')) print ('消費する石は'+str(y*z)+(' 個'))
追記: 期待値は定理によってn*pで求めるので計算いらない・・・・ のちのちいろいろ削る予定