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"