2016-11-04 9 views
0

乱数ジェネレータによって記録された正、負、ゼロを記録する乱数ジェネレータがあります。しかし、私はそれをテストするとき、負の数は記録されず、代わりに正のカウンタに記録されます。私のコード、何か援助に何が間違っているのか分かりませんか?乱数ジェネレータ:カウンタ

from random import randint 
posi_counter = 0 
nega_counter = 0 
zero_counter = 0 
avg_counter = 0 

# Inputs 
num_gen = int(input("How many numbers to be generated? ")) 
if num_gen > 0: 
    max_gen = int(input("Enter maximum number to be generated (>0): ")) 
    min_gen = max_gen * -1 
    print("For {} numbers in the range, {} to {}:".format(
    num_gen, min_gen, max_gen)) 
    avg = 0 
    # Outputs 
    for x in range(num_gen): 
     print(randint(min_gen, max_gen)) 
     avg_counter += 1 
     avg = avg + x 
     if x > 0: 
      posi_counter += 1 
     elif x < 0: 
      nega_counter += 1 
     elif x == 0: 
      zero_counter += 1 
    average_total = avg/avg_counter 
    print("{} positive numbers".format(posi_counter)) 
    print("{} zero numbers".format(zero_counter)) 
    print("{} negative numbers".format(nega_counter)) 
    print("{:.1f} average value".format(average_total)) 
+2

'X'を、原因 '範囲(num_gen)に'常に正です。あなたは 'randint'から生成された値を保持していません。 –

+0

さて、私はあなたの 'avg'変数の名前を' total'に変更します。 (これはランダム変数の平均ではなく、その総和ですが、 'sum'はPythonの組み込み関数なので、悪い選択肢になります 'average_total'は' average'になります。 –

答えて

3

xそれは常に>= 0あるので、range(num_gen)から来て、代わりにこのような何か:

for _ in range(num_gen): 
    x = randint(min_gen, max_gen) 
    print(x) 
+0

forループについて今日。ありがとう – IncognitoBatman

関連する問題