2014-09-25 109 views
0

Python中是否有方法可以生成除特定数字之外的范围内的随机非重复数字。例如,我想生成1到10之间的数字,但“ 1“不应该生成。任何帮助将不胜感激。谢谢。生成除Python中的特定数字以外的任意非重复数字

+0

“非重复” 和 “随机” 是互斥的。随机序列重复数字。 – 2014-09-25 02:25:22

+0

@ IgnacioVazquez-Abrams:不一定,您可以例如生成一个序列的随机排列。因此,该列表是随机的,但不重复... – 2014-09-25 02:40:55

+0

@CommuSoft:这是一个随机的“输出”。可以生成另一个与第一个序列完全相同的随机置换。 – 2014-09-25 02:50:55

回答

0

假设你想在a范围中排除nb

import random 
random.choice([random.randint(a,n-1),random.randint(n+1,b)]) 
+0

当我尝试在random.choice中使用random.sample而不是random.randint时,它会抛出一个错误,指出样本大于人口 – user3330378 2014-09-25 04:01:44

+0

不需要在random.choice中同时使用random.sample。如果您需要使用样本进行一次随机选择,您可以执行'print random.sample(population,1)[0]' – g4ur4v 2014-09-25 05:26:00

1

使用random.sample()有人口不包括你不喜欢的值(一个或多个)。

>>> import random 

>>> population = range(2,11) # 2,3,4,5,6,7,8,9,10 
>>> print random.sample(range(2,11), 5) 
[6, 2, 4, 8, 9] 

或者另一个例子,如果你不想 “42”:

>>> population = range(1, 101) # 1,2,...,100 
>>> population.remove(42) 
>>> print random.sample(population, 20) 
[45, 10, 86, 7, 79, 39, 88, 80, 41, 85, 25, 96, 68, 55, 5, 74, 8, 9, 65, 18] 
相关问题