【问题标题】:display how many times an element has been randomly selected from a list in Python显示从 Python 列表中随机选择元素的次数
【发布时间】:2015-03-10 21:30:22
【问题描述】:

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

例如,这里有一些代码:

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

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

【问题讨论】:

  • 对不起。我是新来的,显然我的代码格式不正确。 random 和 foo 和 ] 和 print 之间应该有换行符。谢谢!
  • 没问题,已经修好了。在编辑器中使用{ }符号来格式化代码(或者手动缩进4个空格)。

标签: python random


【解决方案1】:

使用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' 选项的计数并在您的代码中使用它。

【讨论】:

  • 谢谢!这很有帮助。
  • 如果你愿意的话:picks = Counter(random.choice(options) for _ in range(1000))
【解决方案2】:
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

【讨论】:

  • @Lukas Graf 的回答可能更好。哈哈。但两者都有效。
猜你喜欢
  • 1970-01-01
  • 2013-10-19
  • 2021-12-30
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
相关资源
最近更新 更多