簡體   English   中英

如何計算隨機列表中出現的數字列表 Python

[英]how to count a list of numbers which occour in a random list Python

我從 0-11 的列表中運行 1000 次 random.choice()。 如何跟蹤至少選擇一次所有 12 個數字之前所需的隨機選擇次數。 (許多將被選擇不止一次。)例如,假設模擬為單次試驗產生以下隨機選擇序列:2 5 6 8 2 9 11 10 6 3 1 9 7 10 0 7 0 7 4,其中所有至少選擇了一次 12 個號碼。 此示例試驗的計數為 19。將模擬的每個試驗的計數收集在一個列表中(最終由 1,000 個計數組成)。

這是一個使用collections.Counter作為容器的解決方案:

from collections import Counter
import random

nums = list(range(12))
n = 1000
counts = [0]*n
for trial in range(n):
    c = Counter()
    while len(c)<len(nums):
        c[random.choice(nums)]+=1
    counts[trial] = sum(c.values()) # c.total() in python ≥ 3.10

counts

輸出:

[28, 24, 39, 27, 40, 36, ...] # 1000 elements

計數分布:

計數直方圖

一種簡單(但效率低下)的方法是使用

check = range(11)
if all(elem in randlist for elem in check): # check after each choice
    # do something

正如其他人所說,請告訴我們您到目前為止所做的嘗試,以便我們進一步提供幫助。

也許您可以嘗試使用 set 以非冗余方式存儲您的結果,同時檢查是否已使用所有數字:

import random

guesses = set()
count = 0
for i in range(1000):
    count += 1
    set.add(random.randrange(0, 12))
    if len(guesses) == 12:
        break
print(count)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM