带参数的Python中的随机数

时间:2018-05-30 14:23:32

标签: python python-3.x

使用参数生成随机数。

所以喜欢从1到10和15到20的随机数

输出为1,2,3,4,5,6,7,8,9,15,16,17,18,19

将排除10至15之间的数字

2 个答案:

答案 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