#1 . 赔率和赔付期望
eg. 假设随机产生1个从2到10000的数,你可以花1元买这个数是素数还是合数。
如果你买素数答对了可以获得5.5元
如果你买合数答对了可以获得1.1元
---------------------------------------------------------------------------------------------
素数 | 合数 | |
发生概率 | p | 1-p |
公正赔率 | 1/p | 1/(1-p) |
当赔率y=1/p时候,庄家不赔不赚
假设买素数的有a元,买合数的有b元
庄家收取公a+b元,庄家赔付期望为:
$$ E(y)= \sum p_iy_i = p*(1/p)*a+(1-p)*(1/(1-p)*b=a+b$$
在公正赔率下,庄家不赔不赚。
a=2
b=100000
p_list = [] # 素数列表
for i in range(a, b):
flag = True
for p in p_list:
if p > math.sqrt(i):
break
if i % p == 0:
flag = False
break
if flag:
p_list.append(i)
p_rate = float(len(p_list)) / float(b-a+1)
print ('素数的概率:', p_rate, '\t',)
print ('公正赔率:', 1/p_rate)
print ('合数的概率:', 1-p_rate, '\t',)
print ('公正赔率:', 1 / (1-p_rate))
素数的概率: 0.0959209592095921
公正赔率: 10.425250208507089
合数的概率: 0.9040790407904079
公正赔率: 1.1060979791387835
#假设买素数为1元,买合数为1000元
buy_prime = 1
buy_normal =1000
print('假设买素数的有{}元,买合数的有{}元。设定素数赔率5.5,合数赔率1.1'.format(buy_prime,buy_normal))
print('庄家获利期望',(buy_prime+buy_normal)-(p_rate*5.5*buy_prime+(1-p_rate)*1.1*buy_normal)) # 庄家稳赚不赔!!
假设买素数的有1人,买合数的有10000人。设定素数赔率5.5,合数赔率1.1 庄家获利期望 55.602986029858585
素数 | 合数 | |
0.096 | 0.904 | |
公正赔率 | 10.425 | 1.106 |
庄家实际设定赔率 | 5.5 | 1.1 |