【发布时间】:2016-07-10 20:07:48
【问题描述】:
我无法让程序正常运行。目标是模拟抛硬币,如下所示:
考虑一个随机的数字序列:epsilon_1, epsilon_2, ... , epsilon_N。此序列中的每一项取值+1 或-1,具体取决于抛硬币实验的结果,分别是正面还是反面。
换句话说,for each n = 1,2,...,N:
epsilon_n = { +1 with probability = 1/2; and -1 with probability = 1/2.
现在,我写了一些伪代码来帮助我编写这个程序:
# for n = 1,2,...,N:
# flip coin
# if result == "Heads"
# epsilon_{n} = 1
# else:
# epsilon_{n} = -1
我想将每个 n 的 epsilon 值(因此,每个 n 的实验结果)存储在一个数组中。这是我编写的希望实现此目的的程序:
# array to store outcome of the coin flip
epsilon = np.zeros(N)
# define coin flip experiment
result = [] # result of the experiment
for n in xrange(1, N):
def coin_flip(): #flip coin for each n = 1,...,N
flip = random.randint(0,2)
if (flip == 0):
result = "Heads"
else:
result = "Tails"
return result
if result == "Heads":
epsilon[n] = 1
else:
epsilon[n] = -1
print epsilon
这个程序的输出是一个数组,第一个条目是0,所有其他条目都包含值-1。我指定了N = 100。
拜托,我只需要一些指导。例如,我认为我在为掷硬币实验定义一个函数方面走在了正确的轨道上。我需要它来返回实验结果(正面或反面),这需要为每个n = 0,1,...,N 发生,但我不确定这样做的最佳方法。然后对于每次抛硬币的结果,我的程序必须将值+1 或-1 存储在epsilon 的数组中。我必须将n 作为我提议的函数的参数吗?我在正确的轨道上吗?
非常感谢任何和所有的帮助。提前致谢!
编辑:所以我只想指出我没有忘记导入像 numpy 和 random 这样的库。这些包含在我的原始代码中,但这实际上是更大程序的一部分,所以当我复制并粘贴这段代码时,import random 和 import numpy 被忽略了
【问题讨论】:
-
np.random.choice([1, -1], N)会给你 N 次翻转(每次都有 50% 的机会)。你是否避免使用图书馆(锻炼等)? -
我错误地遗漏了这些库,因为我在这里发布的代码实际上是一个更大的程序的一部分,它可以做其他事情。我的原始代码导入了正确的库。无论如何,非常感谢!您的建议有效的原因是因为
0在技术上不是整数,因此它被排除在间隔[-1,1]之外? -
不,这是一个可供选择的列表。如果您键入
np.random.choice(['Heads', 'Tails'], N),它将返回一个Heads和Tails的数组。如果您输入np.random.choice(['a', 'b', 'c'], N),它将以相等的概率选择a、b或c。 -
哦,我的错我以为是
random.randint([-1,1], N)
标签: python arrays algorithm random