2017-05-31 10 views
-4

私はクラスの課題に取り組んでいます。私は私の希望の結果が何であるかを示すために投稿を再編集しました。これまでは、私は周波数の部分に立ち往生しています。これらの結果に到達したい: Results課題の完了:ダイス確率

ありがとうございます!

num = int(input("How many times would you like to roll the dice? ")) 
sides = int(input("How many sides does the dice have? ")) 

def throwDice(num=1, sides=6): 
    return [random.randint(1,sides) for i in range(num)] 


#-- main ---------------------------------------------------------------------- 

numberOfTrials = int(input('How many trials? Enter:')) 



# perform simulation, record and print frequencies 
frequency= 13*[0] # same as [0,0,0,0,0,0,0,0,0,0,0,0,0] 

for i in range(numberOfTrials): 
    t = throwDice() 
    frequency[t[0]+t[0]] += 1; 

# end for 
print() 
print("Frequencies:") 
print(frequency) 


# calculate relative frequencies, probabilities and errors 
relativeFrequency = [0, 0] 
probability = [0,0] 
error = [0,0] 
for i in range(2, len(frequency)): 
    relativeFrequency.append(frequency[i]/numberOfTrials) 
    probability.append(min(i-1,13-i)/36) 
    error.append(abs(probability[i]-relativeFrequency[i])) 
# end for 


#print(relativeFrequency) 
#print(probability) 
#print(error) 
print() 


# print results 
f1 = "{0:<10}{1:<22}{2:<22}{3:<22}" 
f2 = 71*"-" 
f3 = "{0:>3}  {1:<22.15f}{2:<22.15f}{3:<.15f}" 
print(f1.format("Sum","Relative Frequency","Probability","Error")) 
print(f2) 
for i in range(2, len(frequency)): 
    print(f3.format(i, relativeFrequency[i], probability[i], error[i])) 
#end for 
print() 
+0

エラーメッセージを投稿する場合は、プログラムの予想される動作も投稿してください。もちろん、エラーを取り除く手助けができますが、コードを修正する手助けはできません。あなたのコードが何をすべきかを知らなくても。今、あなたは 'frequency [t [0] + t [1]] 'で何をしようとしているのか推測することしかできません。 –

+0

私は自分の投稿を再編集しました。 – YearofTheBoar

+0

これらの結果は質問の本文に属し、スタックオーバーフロー外のリンクには含まれません。 – Prune

答えて

0

tランダム

輸入はintですので、t[0]は有効な意味を持ちません。

2

右。あなたのルーチンを見てください:

def throwDice(rolls=1, dice_sides=6): 
    results = 0 
    throwDice = 0 
    for i in range(0, rolls): 
      results = random.randint(1, dice_sides) 
    return throwDice 

...

t = throwDice() 
    frequency[t[0]+t[1]] += 1; 

あなたはresultsの最後の1を維持する、ロールの一定量を作ります。その値を無視して、最初にローカル変数throwDiceに割り当てた0を返します(これは、偶然、関数定義をローカルで無効にします)。その後、呼び出し元のプログラムに0を返します。

整数の1番目と2番目の要素を使用することはできません。

あなたの機能が機能していないことを知らずに、どのように多くのコードを蓄積しましたか?続行する前に小さな黒をテストしてみてください。実際には、まったくテストしてみてください。数分後には、問題が指摘されています。この素敵なdebugブログを参照してください。

+0

私はそれを修正し、今結果が得られます。投稿を希望の結果で更新しました。すべてのあなたの助けをありがとう! – YearofTheBoar