我想编写一个程序,从列表中随机选择1000个试验的元素,然后确定每个元素被选为输出的次数。
例如,这里有一些代码:
import random
foo = ['rock', 'paper', 'scissors', 'lizard', 'spock']
print(random.choice(foo))
这将随机返回'foo'中的单个元素。我想在一次迭代中运行随机选择,比如1000次,然后打印出每个元素的选择次数。任何帮助将不胜感激。
答案 0 :(得分:4)
使用collections.Counter
的实例来跟踪您的选择:
from collections import Counter
import random
options = ['rock', 'paper', 'scissors', 'lizard', 'spock']
picks = Counter()
for i in range(1000):
pick = random.choice(options)
picks[pick] += 1
print picks
示例输出:
Counter({'scissors': 224, 'lizard': 209, 'spock': 192, 'paper': 188, 'rock': 187})
collections.Counter
与普通字典非常相似,但如果某个密钥尚未出现,它会假定默认值为0
,因此您可以直接创建新密钥并使用+=
操作 - 非常适合计算。
由于它实现了dict接口,你可以这样做
picks['rock']
只检索'rock'
选项的计数并在代码中使用它。
答案 1 :(得分:0)
import random
foo = ['rock', 'paper', 'scissors', 'lizard', 'spock']
rock = 0
paper = 0
scissors = 0
lizard = 0
spock = 0
count = 0
while count < 1000:
choice = random.choice(foo)
if choice == 'rock':
rock += 1
elif choice == 'paper':
paper += 1
elif choice == 'scissors':
scissors += 1
elif choice == 'lizard':
lizard += 1
elif choice == 'spock':
spock += 1
count +=1
print rock
print paper
print scissors
print lizard
print spock