2015-05-31 470 views
0

我昨天做这个代码试图测试如何真正随机的随机数了Python生成:我怎样才能让这段代码更“自动化”?

# -*- coding: cp1252 -*- 
import random 
print "Bienvenido al Analizador del Azar, este programa generará 100 números para aleatorios, para luego dar en tanto por ciento la cantidad de cada uno." 
numeros_aleatorios = [] 
contador = 0 
while True: 
    namber = random.randint(1,10) 
    numeros_aleatorios.append(namber) 
    contador += 1 
    if contador == 100: 
     break 
PR1 = float(numeros_aleatorios.count(1))/100 
PR2 = float(numeros_aleatorios.count(2))/ 100 
PR3 = float(numeros_aleatorios.count(3))/100 
PR4 = float(numeros_aleatorios.count(4))/100 
PR5 = float(numeros_aleatorios.count(5))/100 
PR6 = float(numeros_aleatorios.count(6))/100 
PR7 = float(numeros_aleatorios.count(7))/100 
PR8 = float(numeros_aleatorios.count(8))/100 
PR9 = float(numeros_aleatorios.count(9))/100 
PR10 = float(numeros_aleatorios.count(10))/100 

print "Hay exactamente un", PR1, "% de 1s" 
print "Hay exactamente un", PR2, "% de 2s" 
print "Hay exactamente un", PR3, "% de 3s" 
print "Hay exactamente un", PR4, "% de 4s" 
print "Hay exactamente un", PR5, "% de 5s" 
print "Hay exactamente un", PR6, "% de 6s" 
print "Hay exactamente un", PR7, "% de 7s" 
print "Hay exactamente un", PR8, "% de 8s" 
print "Hay exactamente un", PR9, "% de 9s" 
print "Hay exactamente un", PR10, "% de 10s" 

正如你所看到的,我只好把PR1,PR2,PR3 ...手动尽一切% ,然后写每一个打印来显示结果。我的问题是,是否有任何方法可以使它更加自动化,所以我不必逐一写每一行?这对我的下一个项目非常有用。

+0

Errrrr。为什么不列出? –

回答

1

一个collections.Counter会为你做所有的计数,并且在试验次数使用range循环要运行:

from collections import Counter 

trial = 100 
counts = Counter(random.randint(1,10) for _ in range(trials)) 
print(counts) 
Counter({3: 17, 7: 12, 8: 12, 9: 12, 4: 11, 6: 9, 2: 8, 10: 8, 5: 6, 1: 5}) 



for i in range(1,11): 
    print("Hay exactamente un {}% de {}".format(100 * counts[i]/float(trials),i)) 

输出:

Hay exactamente un 11.0% de 1 
Hay exactamente un 6.0% de 2 
Hay exactamente un 12.0% de 3 
Hay exactamente un 12.0% de 4 
Hay exactamente un 9.0% de 5 
Hay exactamente un 4.0% de 6 
Hay exactamente un 10.0% de 7 
Hay exactamente un 14.0% de 8 
Hay exactamente un 12.0% de 9 
Hay exactamente un 10.0% de 10 

不知道,如果干草exactamente联合国是在正确的顺序!

+0

谢谢,这正是我想要的! – Nekuness

+0

@Nekuness,无后顾之忧,特别是特别节省了很多打字! –