为列表Y中的每个元素从范围X中指定一个随机数

2024-04-24 15:02:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要为列表Y中的每个元素分配一个范围X中的随机数,同时最小化X中的重复数

为了澄清,我不希望出现这样一种情况,即X中的numberI过多,而X中的numberj没有使用

以一种计算效率高的方式?我很乐意使用图书馆


Tags: 元素列表图书馆方式情况乐意效率高numberi
1条回答
网友
1楼 · 发布于 2024-04-24 15:02:56

类似于deceze在评论中的建议-您可以创建一个基本生成器,它可以反复洗牌,然后从洗牌列表中生成元素,它类似于:

from random import shuffle
from itertools import islice
from collections import Counter

def shuffler(obj):
    lst = list(obj)
    while True:
        shuffle(lst)
        yield from lst

shuffled = shuffler(range(7))

然后您可以islice从它:

random100 = list(islice(shuffled, 100))
# distro100 = Counter(random100)
# Counter({0: 15, 2: 14, 3: 14, 1: 14, 6: 14, 5: 14, 4: 15})

(可能)再次使用:

random14 = list(islice(shuffled, 14))
# distro14 = Counter(random14)
# Counter({6: 3, 4: 2, 2: 2, 3: 2, 0: 2, 5: 2, 1: 1})

不过,您可能需要重新设置它以获得一个完美的all-2发行版

或与其他列表一起压缩:

pairs = list(zip(other_list, shuffled))

相关问题 更多 >