Python 基于有偏硬币翻转100次的随机行走模拟
我从Python开始。我试着模拟一条直线上的随机游动(北和南),将一枚有偏的硬币翻转100次,假设从起点到南的值为负,从起点到北的值为正,有0.3%的几率得到尾巴,有0.7%的几率得到头 我试过两种不同的方法,但都不能正常工作Python 基于有偏硬币翻转100次的随机行走模拟,python,jupyter-notebook,simulation,random-walk,coin-flipping,Python,Jupyter Notebook,Simulation,Random Walk,Coin Flipping,我从Python开始。我试着模拟一条直线上的随机游动(北和南),将一枚有偏的硬币翻转100次,假设从起点到南的值为负,从起点到北的值为正,有0.3%的几率得到尾巴,有0.7%的几率得到头 我试过两种不同的方法,但都不能正常工作 import random def prob(p): return random.random()<p def random_walk(n): heads=0 tails=0 t=0 for i in range(n): if prob(0.3):
import random
def prob(p):
return random.random()<p
def random_walk(n):
heads=0
tails=0
t=0
for i in range(n):
if prob(0.3):
heads += 1
t=t-1
if prob (0.7):
tails += 1
t=t+1
print (heads, "heads")
print (tails, "tails")
print (t)
return t
heads=0
tails=0
t=0
for i in range(0,100):
if prob(0.3):
heads += 1
t=t-1
if prob(0.7):
tails += 1
t=t+1
print (heads, "heads")
print (tails, "tails")
print (t)
随机导入
def prob(p):
return random.random()你所做的不是掷硬币100次,而是200次
每次调用prob()
函数都是掷硬币。现在
周期的每个迭代都包含2个调用-首先是0.3,然后是0.7
你要找的可能是
for _ in range(n):
if prob(0.3):
heads +=1
else:
tails +=1
这样,你可以准确地抛100次(prob-calls),每一次都是头或尾。你所做的不是抛100次硬币,而是抛200次
每次调用prob()
函数都是掷硬币。现在
周期的每个迭代都包含2个调用-首先是0.3,然后是0.7
你要找的可能是
for _ in range(n):
if prob(0.3):
heads +=1
else:
tails +=1
这样,您可以进行100次投掷(prob调用),每一次都是head或tail。这里的问题在于您对prob
函数的调用。由于在范围(n)
中的i的循环的每次迭代中调用函数两次,因此最终会得到两个不同的RN
另外,如果random.random()
返回,例如0.1
和0.2
,那么与if prob(0.3):
和if prob(0.7):
相关联的if块将在同一模拟循环中执行
您需要在每个执行循环中调用一次random.random()
,并使两个if语句互斥—例如,将其更改为if/else块
以下是解决这些问题的方法:
for i in range(n):
coin_has_flipped_tails = prob(0.3)
if coin_has_flipped_tails:
tails += 1
t += 1
else: # this implies that the coin has flipped head
heads += 1
t -= 1
这里的问题是对prob
函数的调用。由于在范围(n)
中的i的循环的每次迭代中调用函数两次,因此最终会得到两个不同的RN
另外,如果random.random()
返回,例如0.1
和0.2
,那么与if prob(0.3):
和if prob(0.7):
相关联的if块将在同一模拟循环中执行
您需要在每个执行循环中调用一次random.random()
,并使两个if语句互斥—例如,将其更改为if/else块
以下是解决这些问题的方法:
for i in range(n):
coin_has_flipped_tails = prob(0.3)
if coin_has_flipped_tails:
tails += 1
t += 1
else: # this implies that the coin has flipped head
heads += 1
t -= 1
您好,您能否更具体地说明“工作不正常”,您发现的意外行为是什么?请解释!谢谢您好,您能否更具体地说明“工作不正常”,您发现的意外行为是什么?请解释!谢谢