在除python中的特定数字之外的范围内生成随机的非重复数字

在除python中的特定数字之外的范围内生成随机的非重复数字,python,Python,python中是否有一种方法可以在某个范围内生成除特定数字以外的随机非重复数字。例如,我想生成介于1和10之间的数字,但不应生成“1”。如有任何帮助,将不胜感激。谢谢。假设您想将n排除在a到b import random random.choice([random.randint(a,n-1),random.randint(n+1,b)]) 用于不包含您不喜欢的值的填充 >>> import random >>> population = range(2,

python中是否有一种方法可以在某个范围内生成除特定数字以外的随机非重复数字。例如,我想生成介于1和10之间的数字,但不应生成“1”。如有任何帮助,将不胜感激。谢谢。

假设您想将
n
排除在
a
b

import random
random.choice([random.randint(a,n-1),random.randint(n+1,b)])
用于不包含您不喜欢的值的填充

>>> 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”:


“非重复”和“随机”是相互排斥的。随机序列重复数字。@IgnacioVazquez Abrams:不一定,例如,您可以生成序列的随机排列。因此,该列表是随机的,但不重复…@CommuSoft:这是一个单一的随机“输出”。可以生成另一个顺序与第一个顺序完全相同的随机排列。当我尝试在random.choice中使用random.sample而不是random.randint时,它会抛出一个错误,说sample大于population无需同时使用
random.sample
inside
random.choice
。如果您需要使用sample进行一个随机选择,您可以执行
打印random.sample(总体,1)[0]
>>> 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]