2017-04-06 2 views
1

run_sim 함수를 nsim 번 실행하고 매개 변수 N, D, p로 실행하는 collect_sims (nsim, N, D, p = 0.5, nmax = 10000) 함수를 작성하고 길이가 nmax 인 numpy 배열을 반환합니다. 시뮬레이션이 지정된 수의 단계를 중단 한 횟수를 제공합니다. 예를 들어, nsim이 8이고 run_sim의 연속 실행이 3,4,4,3,6,5,4,4를 준다고 가정합니다. 당신은파이썬 주사위 결과 수

def collect_sims(nsim, N, D, p=0.5, nmax=10000): 
    run_sim(N=20, D=6, p=0.5, itmax=5000) 
    onecount = 0 
    twocount = 0 
    threecount = 0 
    fourcount = 0 
    fivecount = 0 
    sixcount = 0 
    for k in range (n): 
     if D == 1: 
      onecount += 1 
     if D == 2: 
      twocount += 1 
     if D == 3: 
      threecount += 1 
     if D == 4: 
      fourcount += 1 
     if D == 5: 
      fivecount += 1 
     if D == 6: 
      sixcount += 1 

return(k) 

print(onecount, "1",twocount,"2",threecount,"3",fourcount,"4",fivecount,"5",sixcount,"6") 

그것은 내 6 개 변수 내가 어떻게 정의 할 수 있습니다, 정의되어 있지 않은 등, twocount, onecount 말한다 "... 두 3S, 네 4S, 일 5 일 6, 제로기를 제로 8S"로 이것을 표로 것 그들? 또한 코드를 수정하려면 어떻게해야합니까?

답변

0

들여 당신의 루프 : 당신이 게시 코드에서, 그것은합니다 (에 대한 문, 없음) 원래 들여 쓰기 수준입니다. 이것은 당신의 기능을 끝내고, 루프는 주 프로그램에있다. 변수는 아직 정의되지 않았으므로 (함수의 변수와 같지 않음) 반환은 불법입니다.

시도해보십시오.

def collect_sims(nsim, N, D, p=0.5, nmax=10000): 
    run_sim(N=20, D=6, p=0.5, itmax=5000) 
    onecount = 0 
    twocount = 0 
    threecount = 0 
    fourcount = 0 
    fivecount = 0 
    sixcount = 0 
    for k in range (n): 
     if D == 1: 
      onecount += 1 
     if D == 2: 
      twocount += 1 
     if D == 3: 
      threecount += 1 
     if D == 4: 
      fourcount += 1 
     if D == 5: 
      fivecount += 1 
     if D == 6: 
      sixcount += 1 

    print(onecount, "1",twocount,"2",threecount,"3",fourcount,"4",fivecount,"5",sixcount,"6") 

collect_sims() 

충분한 코드를 제공하지 않아 테스트 할 수 없습니다. 또한 인쇄 문을 디버깅 흔적으로 남겨 두었습니다. 배열을 반환해야하며 아직 배열을 시도하지 않았습니다. 원래 코드는 k이며 n + 1이어야합니다. 이것은 호출 프로그램에 유용하지 않습니다.


추가 도움

는 계수 6 개 요소보다는 여섯 개 별도의 변수들의리스트를 사용하여 알아. 더 나아가 모든 주사위를 목록에 넣고 카운트을 사용하여 보유하고있는 주사위 개수를 결정하십시오.

1

나는 왜 당신이 k를 돌려주고 있는지 모른다.

어쨌든 oncount, twocount, ... 등의 다른 범위에있는 인쇄 문제가 있습니다. 당신은 함수 내에서 인쇄()를 넣을 수 있습니다하거나 카운트

을 가진 튜플을 반환 할 수와 같은 일부 :

def collect_sims(nsim, N, D, p=0.5, nmax=10000): 
    run_sim(N=20, D=6, p=0.5, itmax=5000) 
    onecount = 0 
    twocount = 0 
    threecount = 0 
    fourcount = 0 
    fivecount = 0 
    sixcount = 0 
for k in range (n): 
    if D == 1: 
     onecount += 1 
    if D == 2: 
     twocount += 1 
    if D == 3: 
     threecount += 1 
    if D == 4: 
     fourcount += 1 
    if D == 5: 
     fivecount += 1 
    if D == 6: 
     sixcount += 1 

return(onecount, twocount, threecount, fourcount,fivecount,sixcount) 

onecount, twocount, threecount, fourcount,fivecount,sixcount = collect_sims (...) 

print(onecount, "1",twocount,"2",threecount,"3",fourcount,"4",fivecount,"5",sixcount,"6") 

다른 솔루션

어쩌면이 다른 솔루션은 당신을 도울 수 있습니다 :

https://stackoverflow.com/a/9744274/6237334