gpt4 book ai didi

python - 如何从 python 中的排名组中随机选择数字,以创建特定长度的列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:54 33 4
gpt4 key购买 nike

我正在尝试创建一个长度为 6 的序列,其中包含从排名组中随机挑选的数字。序列的第一个元素必须从第一组中提取,最后一个元素必须从最后一个组中提取

让新序列称为“seq”。那么,如果

a = [1,2,3]
b = [9]
c = [5,6]
d = [11,12,4]

seq[0] in a == 1
seq[-1] in d == 1

中间元素必须来自列表 a、b、c、d。但是,如果第二个元素是从“a”中随机抽取的,那么第三个元素必须从后面的“a”元素或 b/c/d 中抽取。类似地,如果第三个元素是从“c”中提取的,那么其他元素必须来自后面的等级,如 d。这些组以这种方式排名。

现在给出的组数是任意的(最多 6 组)。序列的长度 ( len(seq) == 6 ) 是标准的。

每个 组中的一个元素必须在最终序列中。元素的重复是不允许的。所有组元素都是唯一的(并且它们始终是 1-12 范围内的数字)。

最佳答案

您有四个强制选择,然后是两个自由选择。 set 是一个很好的帮助。

from random import choice
a = [1,2,3]
b = [9]
c = [5,6]
d = [11,12,4]

l=a+b+c+d #ordered candidates

def select():
e=set(l)
for s in (a,b,c,d,e,e): # 4 forced choices and 2 frees.
e.remove(choice(tuple(s))) # sets have no index.
return [x for x in l if x not in e]

10 个样本:

>>> for _ in range(10) : print (select())
[1, 9, 5, 11, 12, 4]
[1, 3, 9, 6, 11, 4]
[1, 3, 9, 5, 6, 12]
[1, 2, 9, 6, 11, 4]
[1, 2, 9, 5, 6, 4]
[2, 9, 5, 6, 11, 4]
[1, 2, 9, 5, 11, 12]
[1, 3, 9, 6, 11, 12]
[3, 9, 6, 11, 12, 4]
[1, 2, 9, 5, 12, 4]

关于python - 如何从 python 中的排名组中随机选择数字,以创建特定长度的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35205400/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com