クッキーもぐもぐ

PC関係とか映画とかゲームとかの

ガチャの確率と期待値をプログラミングで求める

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で求めるので計算いらない・・・・ のちのちいろいろ削る予定