2024-04-24 15:02:56 发布
网友
我需要为列表Y中的每个元素分配一个范围X中的随机数,同时最小化X中的重复数
为了澄清,我不希望出现这样一种情况,即X中的numberI过多,而X中的numberj没有使用
以一种计算效率高的方式?我很乐意使用图书馆
类似于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从它:
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))
类似于deceze在评论中的建议-您可以创建一个基本生成器,它可以反复洗牌,然后从洗牌列表中生成元素,它类似于:
然后您可以
islice
从它:(可能)再次使用:
不过,您可能需要重新设置它以获得一个完美的all-2发行版
或与其他列表一起压缩:
相关问题 更多 >
编程相关推荐