如何解决蒙特卡洛模拟器的第一步
我正在研究一个简单的蒙特卡洛模拟器,以观察突破前达到目标的可能性。计划是创建一个函数,该函数首先检查运气是否达到目标,如果没有,则生成随机数,将其与选定的概率值进行比较,然后根据赌徒是赢还是输,来上下移动运气。我希望此函数返回100个1和0的列表,但相反,我得到的是k +或-1。在这里我做错了什么?另外,我怎样才能使它更清洁?
import numpy as np
from numpy import random
# Variables
k = 5 #starting fortune
g = 10 #goal. Amount of money at which the gambler stops playing.
p = .5 #probability of winning
bet = 1 #bet size
def goal_or_bust(set_size=100):
global k
made_goal = []
for i in range(set_size):
if k <= 0:
made_goal.append(0)
break
elif k >= g:
made_goal.append(1)
break
else:
rand01 = np.random.rand()
if rand01 <= p:
k = k + bet
return(k)
if rand01 > p:
k = k - bet
return(k)
return(made_goal)
goal_or_bust()
解决方法
测试结果后,您将立即退出功能。
rand01 = np.random.rand()
if rand01 <= p:
k = k + bet
return(k) # <<<< HERE
if rand01 > p:
k = k - bet
return(k) # <<<<< HERE
因此,您的for循环仅循环(重复)一次。
关于清理代码,请删除全局变量并将它们作为函数的所有参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。