显示从Python中的列表中随机选择元素的次数

时间:2015-03-10 21:30:23

标签: python random

我想编写一个程序,从列表中随机选择1000个试验的元素,然后确定每个元素被选为输出的次数。

例如,这里有一些代码:

import random
foo = ['rock', 'paper', 'scissors', 'lizard', 'spock']
print(random.choice(foo))

这将随机返回'foo'中的单个元素。我想在一次迭代中运行随机选择,比如1000次,然后打印出每个元素的选择次数。任何帮助将不胜感激。

2 个答案:

答案 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