我正在编写一个程序来模拟像Gallup或Rasmussen这样的公司每天发布的实际投票数据:www.gallup.com和www.rassmussenreports.com
我正在使用强力方法,计算机生成一些随机的每日轮询数据,然后计算三天平均值,以查看随机数据的平均值是否与民意测验数字相匹配. (大多数公司调查数字是三天平均值)
目前,它适用于一次迭代,但我的目标是让它产生与平均轮询数据匹配的最常见模拟.然后我可以将代码改为1到1000次迭代.
这是我的问题.在测试结束时,我在一个变量中有一个数组,看起来像这样:
[40.1, 39.4, 56.7, 60.0, 20.0 ..... 19.0]
该程序当前为每个正确的模拟生成一个数组.我可以将每个数组存储在一个变量中,但是我必须有一个程序可以生成1到1000个变量,具体取决于我请求的迭代次数!?
我该如何避免这种情况?我知道有一种智能的方法,不需要程序生成变量来存储数组,具体取决于我想要的模拟数量.
麦凯恩的代码测试:
test = []
while x < 5:
test = round(100*random.random())
mctest.append(test)
x = x +1
mctestavg = (mctest[0] + mctest[1] + mctest[2])/3
#mcavg is real data
if mctestavg == mcavg[2]:
mcwork = mctest
如何在不创建多个mcwork变量的情况下重复?
解决方法:
会这样的吗?
from random import randint
mcworks = []
for n in xrange(NUM_ITERATIONS):
mctest = [randint(0, 100) for i in xrange(5)]
if sum(mctest[:3])/3 == mcavg[2]:
mcworks.append(mctest) # mcavg is real data
最后,您将看到一个有效的mctest列表列表.
我改变了什么:
>使用list comprehension来构建数据而不是for循环
>使用random.randint获取随机整数
>使用slices并求和计算前三项的平均值
>(回答你的实际问题:-))将结果放在mcworks列表中,而不是为每次迭代创建一个新变量
标签:python,arrays