使用参数生成随机数。
所以喜欢从1到10和15到20的随机数
输出为1,2,3,4,5,6,7,8,9,15,16,17,18,19
将排除10至15之间的数字
答案 0 :(得分:2)
您可以使用排除的数字列表和生成数字的范围。像:
excluded = [10,11,12,13,14]
for i in range(1, 20):
if i not in excluded:
print(i)
答案 1 :(得分:2)
您只需使用range
构建一个选项列表,然后将其传递给random.choice
:
import random
choices = [*range(1, 10), *range(15, 20)]
num = random.choice(choices)
幸运的是,这个解决方案也很短,可以压缩成一行:
num = random.choice([*range(1, 10), *range(15, 20)])
有人指出(然后删除了他们的评论)关于使用此解决方案的过多内存使用和更大的数字。如果范围大幅扩展,则可以使用此解决方案而无需实际创建所有可能选择的列表:
import random
min1 = 1
max1 = 10
min2 = 15
max2 = 20
num_choices = (max1 - min1) + (max2 - min2)
n = int(random.random() * num_choices) + 1
if n >= max1 and n < min2:
n += min2 - max1