Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中模拟掷硬币实验_Python_Arrays_Algorithm_Random - Fatal编程技术网

在Python中模拟掷硬币实验

在Python中模拟掷硬币实验,python,arrays,algorithm,random,Python,Arrays,Algorithm,Random,我很难让程序正常工作。目标是模拟投币,如下所示: array([ 1., 1., 1., -1., -1., 1., -1., -1., -1., -1.]) 考虑一个随机数字序列:epsilon_1,epsilon_2,εN。根据抛硬币实验的结果,该序列中的每个术语的值分别为正面或反面 换句话说,对于每个n=1,2,…,n: epsilon\u n={+1,概率=1/2;-1,概率=1/2。 现在,我编写了一些psuedo代码来帮助我编写这个程序: # for n = 1,2,...,

我很难让程序正常工作。目标是模拟投币,如下所示:

array([ 1.,  1.,  1., -1., -1.,  1., -1., -1., -1., -1.])
考虑一个随机数字序列:
epsilon_1,epsilon_2,εN
。根据抛硬币实验的结果,该序列中的每个术语的值分别为正面或反面

换句话说,
对于每个n=1,2,…,n:

epsilon\u n={+1,概率=1/2;-1,概率=1/2。

现在,我编写了一些psuedo代码来帮助我编写这个程序:

# 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
都需要这样做,但我不确定这样做的最佳方法。然后对于每个硬币投掷的结果,我的程序必须在
epsilon
的数组中存储值
+1
-1
。我必须将
n
作为建议函数的参数吗?我在ri上吗你在这儿吗

非常感谢您的帮助,谢谢


编辑:所以我只想指出我没有忘记导入numpy和random之类的库。这些库包含在我的原始代码中,但这实际上是一个更大程序的一部分,因此当我复制和粘贴这段代码时,
import random
import numpy
被遗漏了

您有几个错误首先,您正在创建一个名为result的空列表,但稍后在代码中result是一个字符串。所以您不需要该部分

import numpy as np
import random
N = 10
epsilon = np.zeros(N)
这将创建一个长度为N的数组,用于存储结果。现在,您的主要错误在循环中。您应该在循环外定义该函数,并在每次迭代中调用它:

def coin_flip(): #flip coin for each n = 1,...,N
    flip = random.randint(0, 1) 
    if (flip == 0):
        result = "Heads"
    else:
        result = "Tails"
    return result
请注意,我将第一行更改为
random.randint(0,1)
,因为它包含两端。现在,如果运行
coin\u flip()
,它将返回“Heads”或“Tails”。 相应地更改循环:

for n in xrange(N):
    result = coin_flip()
    if result == "Heads":
        epsilon[n] = 1
    else:
        epsilon[n] = -1
这就是修改epsilon数组的地方。请注意,在每次迭代中,我都调用
coin\u flip()
函数并将其分配给
结果

现在,打印epsilon将为您提供如下数组:

array([ 1.,  1.,  1., -1., -1.,  1., -1., -1., -1., -1.])
这是一个漫长的过程。相反,您可以(使用随机库):

或(使用numpy):


您的代码中有几个错误。首先,您正在创建一个名为result的空列表,但稍后在代码中result是一个字符串。因此,您不需要该部分

import numpy as np
import random
N = 10
epsilon = np.zeros(N)
这将创建一个长度为N的数组,用于存储结果。现在,您的主要错误在循环中。您应该在循环外定义该函数,并在每次迭代中调用它:

def coin_flip(): #flip coin for each n = 1,...,N
    flip = random.randint(0, 1) 
    if (flip == 0):
        result = "Heads"
    else:
        result = "Tails"
    return result
请注意,我将第一行更改为
random.randint(0,1)
,因为它包含两端。现在,如果运行
coin\u flip()
,它将返回“Heads”或“Tails”。 相应地更改循环:

for n in xrange(N):
    result = coin_flip()
    if result == "Heads":
        epsilon[n] = 1
    else:
        epsilon[n] = -1
这就是修改epsilon数组的地方。请注意,在每次迭代中,我都调用
coin\u flip()
函数并将其分配给
结果

现在,打印epsilon将为您提供如下数组:

array([ 1.,  1.,  1., -1., -1.,  1., -1., -1., -1., -1.])
这是一个漫长的过程。相反,您可以(使用随机库):

或(使用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.random.random([-1,1],N)
np.random.选择([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.random.random([-1,1],N)
非常感谢您的详细回复!!我回到电脑前会尝试一下谢谢您的详细回复!!我回到电脑前会尝试一下