实验题目:
python用法练习
1.牛顿法求解1-100的平方根:
2.赔率计算:
(1)求区间[750,900]内的素数和合数概率,以及公平赔率;
(2)在(1)和实际给出的赔率为5.5(素数)和1.1(合数)的条件下,计算赔率系数(α1,α2),并计算a=b时、a/b=素数的概率/合数的概率时,盈利期望;
公平赔率:
真实赔率:
庄家盈利期望:
实验代码:
import numpy as np
import matplotlib.pyplot as plt
# ---------------牛顿法求解1-100的平方根------------------
def yfunx(x):
w = 1;
z = 1;
while True:
z = (w + x / w) / 2; #
if abs(z - w) < 0.000001:
break;
w = z;
return z;
#从1到50,分成50份,循环求出x[i]对应的y
x = np.linspace(1, 100, 50)
y=[];
for i in range(50):
y.append(yfunx(x[i]));
#画图
plt.figure()
plt.plot(x, y,'ro-')
plt.show()
# ---------------------赔率计算--------------------------
def is_prime(n): #判断n是否为素数
i=2
while i*i<=n:
if n%i==0:
return False
i+=1
return True
pp=0
pc=0
np=0
nc=0
primes=[]
def work():
global nc
global np
global pp
global pc
for i in range(750, 901): # 从750到900,共151个数
if is_prime(i): # 如果i是素数
np += 1 # 素数个数加一
primes.append(i) # 将i加入primes
else:
nc += 1 # 合数个数加一
pp = np / 151 # 素数概率
pc = nc / 151 # 合数概率
work()
print(primes)
print('素数的概率:',pp,' 公平赔率:',1/pp)
print('合数的概率:',pc,' 公平赔率:',1/pc)
# 真实赔率为 5.5 和 1.1
alpha1 = 5.5 * pp # 素数赔率系数
alpha2 = 1.1 * pc # 合数赔率系数
print('赔率系数:',alpha1,alpha2) #
print('盈利期望(a = b = 0.5):',(1-alpha1)*0.5+(1-alpha2)*0.5)
print('盈利期望(a / b = 素数概率 / 合数概率):',(1-alpha1)*pp+(1-alpha2)*pc)