문제

나는 프로그램 작성 시뮬레이션하는 실제 데이터는 폴링과 같은 회사 갤럽 또는 라스무센 게시일: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 vars?

도움이 되었습니까?

해결책

는 것 같은 것이 일하는가?

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 목록입니다.

내가 무엇을 변경:

  • 목록 이해 을 구축하는 데이터에 대한 루프
  • random.randint 을 얻을 임의의 정수
  • 조각sum 을 계산하는 평균의 처음 세 가지 항목
  • (답변을 실제 문제:-))을 넣어 결과 목록 mcworks, 를 만드는 대신 새로운 변수를 위해 모든 반복

다른 팁

에 대해 이야기하고 있는 이것을 하고 있는가?

>>> a = [ ['a', 'b'], ['c', 'd'] ]
>>> a[1]
['c', 'd']
>>> a[1][1]
'd'

목록에서 파이썬은 포함 모든 종류의 개체--내가 이해하는 경우 올바르게 질문합니다 listlists 일을 할 필요가 있습니까?이 같은 것(수정 기능 generate_poll_data() 을 생성하는 데이터:

data = []

for in xrange(num_iterations):
    data.append(generate_poll_data())

그런 다음 data[n] 될 것입니다 목록의 데이터 (n-1)일 실행합니다.

기 때문에 당신은 생각 변수, 수도 있습을 선호 사전 통해서 목록:

data = {}
data['a'] = [generate_poll_data()]
data['b'] = [generate_poll_data()]

etc.

나는 강하게 사용을 고려 NumPy 니다.당신이 얻을 효율적으 N-차원 배열할 수 있는 프로세스를 쉽고 빠르게.

깔끔 그것을 할 수있는 방법을 사용하는 것의 목록을 나열과 조합 판다.다음할 수 있을 만드 3-하루 평균.이것은 쉽게 검색을 통한 결과가 실제의 것으로 다른 열,그리고 사용하는 이 함수를 찾는 사람이 일치합니다.

rand_vals = [randint(0, 100) for i in range(5))]
df = pd.DataFrame(data=rand_vals, columns=['generated data'])
df['3 day avg'] = df['generated data'].rolling(3).mean()
df['mcavg'] = mcavg # the list of real data
# Extract the resulting list of values
res = df.loc[df['3 day avg'] == df['mcavg']]['3 day avg'].values

이것은 또한 깔끔한 경우에 당신을 사용하려는 동일한 임의의 값이 다양한 설문 조사/사람,그냥 다른 추가 열과 함께 그들의 실제 값과 동일한 검색을 수행한다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top