我试图创建一个长度为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范围内的数字)。
试试z=[a, b, c, d]
然后,对于 z 中的每个元素 e,请执行 seq.append(e[randint(0,Len(e))]),例如
from random import randint
a=[1,2,3]
b=[4,5,6]
z=[a,b]
print(a[randint(0,len(a))])
f=[]
for e in z:
f.append(e[randint(0,len(e))])
print(f)
或者您可以使用for循环而不是for each,并使用手动计数器,这样就可以使seq[counter]=。。。
但这不会随机选取组。
这个怎么样:
from random import choice, randint
v = [[1, 2, 3],
[9],
[5, 6],
[11, 12, 4]]
def whatever(values, n=6):
first = [choice(values[0])]
last = [choice(values[-1])]
seq = []
k = 0
while len(seq) < n -2:
k = randint(k, len(values)-1)
seq.append(choice(values[k]))
return first + seq + last
print whatever(v, 6)
你有四个强制选择,然后是两个自由选择。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]
问题内容: 假设我需要一个3位数的电话号码,因此它类似于: 问题答案: 要获得一个随机的3位数字: (假设您实际上是指三位数,而不是“最多三位数”。) 要使用任意数量的数字: 输出:
我如何创建一个懒散的随机数序列? 执行它将引发异常: (线程“main”clojure.lang.arityException中的异常:传递给:USER$random-numbers$fn at clojure.lang.afn.throwarity(afn.java:437)at clojure.lang.afn.invoke(afn.java:39)at clojure.core$iterat
问题内容: 我想创建一个随机的整数列表以进行测试。数字的分布并不重要。唯一要数的是 时间 。我知道生成随机数是一项耗时的任务,但是必须有更好的方法。 这是我当前的解决方案: v2比v1快,但无法大规模使用。它给出以下错误: ValueError:样本大于总体 是否有一个快速,有效的解决方案能够在这种规模上工作? 答案的一些结果 安德鲁的:0.000290962934494 咬人:0.0058455
问题内容: 我想生成一组x个唯一的随机数,并在Python中对其进行排序。例如:range(1000,10000)x = 100 我想出了导入随机数并使用random.randrange方法,然后循环获取100个随机数,最后对它们进行排序。 但是,我不知道如何获得唯一的数字(这样就不会重复)-我应该验证每个循环吗?还是还有其他更简单的方法呢?我应该如何对它们进行排序? 问题答案: 采用 排序部分很
问题内容: 我有一个字节数组,固定长度为4。 我需要将每个字节设置为随机字节。如何以最有效的方式这样做?就我而言,这些方法没有提供随机字节功能。 也许有一种内置的方式,还是我应该生成一个随机字符串并将其转换为字节数组? 问题答案: 包兰特 func Read 读取从默认源生成len(p)个随机字节,并将它们写入p。它总是返回len(p)和nil错误。 f unc(* Rand)读 读取生成len(
stackoverflow社区, 给定数字的数字可以交换。在一个序列中,同一个数字只能使用一次(例如20和02、15和51,它们只能在一个序列中使用一次)好吧,我尝试了几个代码组合,但没有一个成功。。。