做的过程中遇到了一个问题,用if,else时用错了,还好纠正过来了。
这里附上一个链接,以方便查找:Python - if、if else 、if else
1.投掷一枚硬币,求3比4先发生的概率
import numpy as np
def one_res():
a=[]
for i in range(0,100):
a.append(np.random.randint(1,7))
if 3 or 4 in a:
if 3 in a:
k=1
break
if 4 in a:
k=0
break
return(k)
res=[]
for i in range(0,10000):
res.append(one_res())
pro=sum(res)/10000
print(pro)
运行结果:0.499接近0.5
2.投掷一枚硬币,直到出现两次正面朝上,记投掷次数为,求
import pandas as pd
import random
def ran_number(a,b):
c=[]
c.append(random.randint(a, b))
for i in range(0,50):
if 1 not in c:
c.append(random.randint(a, b))
else:
result = pd.value_counts(c)
if result[1]==1:
c.append(random.randint(a, b))
if result[1]==2:
k=i+1
return(k)
break
n=[]
for j in range(0,1000):
n.append(ran_number(0,1))
mean=sum(n)/1000
print(mean)
运行结果:4.022接近4
3.投掷一枚硬币,直到出现连续两次正面朝上,记投掷次数为,求
一道机器学习岗位面试题:平均要抛多少次硬币,才能出现连续两次正面向上?
import pandas as pd
import random
def ran_number(a,b):
c=[]
c.append(random.randint(a, b))
c.append(random.randint(a, b))
for i in range(0,50):
if c[-1]+c[-2]==2:
k=i+2
return k
break
else:
c.append(random.randint(a, b))
n=[]
for j in range(0,10000):
n.append(ran_number(0,1))
mean=sum(n)/10000
print(mean)
运行结果:5.9837接近6
4.双骰子博弈的玩法如下:玩家投两颗骰子,如果其和是7或11,他就赢。如果其和是2,3,或12,他就输。如果是其他结果,就继续玩,直至他再次投到这个点数(则他赢),或者他投到7(则他输),计算玩家赢的概率。
import random
import numpy as np
def one_res():
res = sum(np.random.randint(1,7,size=2)) #np.random.randint()方法的取值区间是前闭后开区间
if res==7 or res==11:
i=1
elif res==2 or res==3 or res==12:
i=0
else:
for e in range(0,100000):
out=sum(np.random.randint(1,7,size=2))
if out==res:
i=1
break
elif out==7:
i=0
break
return i
a=[]
for i in range(0,1000000):#做一百万次试验
a.append(one_res())
pro=sum(a)/1000000
print(pro)
运行结果:0.4915接近0.49
下面这个是同学写的:
times=[]
import numpy as np
for e in range(0,1000000):
res = sum(np.random.randint(1, 7, size=2))
res2 = sum(np.random.randint(1, 7, size=2))
if res == 7 or res == 11:
i = 1
elif res == 2 or res == 3 or res == 12:
i = 0
else:
while res2!=res and res2!=7:
res2=sum(np.random.randint(1, 7, size=2))
if res2==res:
i=1
if res2==7:
i=0
times.append(i)
pro=np.mean(times)
print(pro)