Python 如何生成唯一的随机列表
可能重复:Python 如何生成唯一的随机列表,python,r,bioconductor,Python,R,Bioconductor,可能重复: 我想从19000个基因中创建1000个1652个基因的随机列表。因为宇宙并没有那么大,所以我决定更换。唯一的条件是列表可以包含它们之间的相似基因(由于替换),但每个列表不能包含一个以上的基因。因此,它在单一列表中是唯一的。有什么建议吗 例:宇宙=字母[1:26] 期望输出: 我希望避免出现以下情况: 因为宇宙不是那么大,我不能设置REPLACE=F。如果我设置REPLACE=T,列表中会出现复制的元素……这就是我在分析时试图避免的 提前谢谢 E.不确定“替换=T”是什么意思,但ra
我想从19000个基因中创建1000个1652个基因的随机列表。因为宇宙并没有那么大,所以我决定更换。唯一的条件是列表可以包含它们之间的相似基因(由于替换),但每个列表不能包含一个以上的基因。因此,它在单一列表中是唯一的。有什么建议吗 例:宇宙=字母[1:26] 期望输出: 我希望避免出现以下情况: 因为宇宙不是那么大,我不能设置REPLACE=F。如果我设置REPLACE=T,列表中会出现复制的元素……这就是我在分析时试图避免的 提前谢谢 E.不确定“替换=T”是什么意思,但random.sample可能会满足您的要求
>>> import random
>>> import string
>>> universe = string.ascii_lowercase
>>> random.sample(universe, 5)
['z', 'n', 'p', 'u', 's']
以数字为宇宙
>>> universe = range(19000)
>>> result = [random.sample(universe, 1652) for x in range(1000)]
运行不到一秒钟。如果您想避免重复(起初不太可能),可以使用
>>> result = set()
>>> while len(result) < 1000:
... result.add(tuple(random.sample(universe, 1652)))
>result=set()
>>>而len(结果)<1000:
... add(tuple(random.sample(universe,1652)))
该代码从宇宙中抽取了10个样本中的5个,无需替换。我想这就是你想要的:
Universe = letters[1:26]
replicate(5, sample(Universe, 10, replace = FALSE))
[,1] [,2] [,3] [,4] [,5]
[1,] "j" "l" "k" "c" "j"
[2,] "g" "i" "c" "t" "g"
[3,] "z" "u" "m" "u" "e"
[4,] "a" "b" "t" "e" "q"
[5,] "q" "d" "j" "k" "m"
[6,] "r" "a" "l" "l" "x"
[7,] "e" "g" "r" "i" "f"
[8,] "l" "w" "o" "g" "u"
[9,] "b" "y" "b" "x" "c"
[10,] "u" "j" "x" "a" "b"
我假定
19000
,而
不是小数点?应该做这个把戏。嗨,保罗!谢谢你,但是如果我像我之前试着问的那样设置replace=F,我将永远无法生成从19000个基因开始的1652个基因的列表……我引用你的问题:唯一的条件是列表可以包含它们之间的相似基因(由于替换),但每个列表不能包含一个以上的基因。此代码满足此要求。@Elb,可能您对该问题想得太多了。一个列表中不应该有替换项,但是对于每个新列表,您都要从整个世界重新开始。“REPLACE=T”
是R中示例函数的一个参数,尽管它们应该是小写的replace=TRUE
表示带替换的绘图,FALSE
表示不带替换的绘图<代码>随机。样本
无需替换即可绘制。
>>> result = set()
>>> while len(result) < 1000:
... result.add(tuple(random.sample(universe, 1652)))
Universe = letters[1:26]
replicate(5, sample(Universe, 10, replace = FALSE))
[,1] [,2] [,3] [,4] [,5]
[1,] "j" "l" "k" "c" "j"
[2,] "g" "i" "c" "t" "g"
[3,] "z" "u" "m" "u" "e"
[4,] "a" "b" "t" "e" "q"
[5,] "q" "d" "j" "k" "m"
[6,] "r" "a" "l" "l" "x"
[7,] "e" "g" "r" "i" "f"
[8,] "l" "w" "o" "g" "u"
[9,] "b" "y" "b" "x" "c"
[10,] "u" "j" "x" "a" "b"