Python-如何生成具有多个范围的随机整数?


问题内容

我从(a,b)的不同集合生成X数量的随机整数时遇到了困惑。例如,我想从(1,5),(9,15)和(21,27)生成5个随机整数。我的代码生成5个随机整数,但仅在21到27之间,而不是其他两个整数。理想情况下,我希望看到的像是1,4,13,22,25,而不是21,21,25,24,27。

我的代码:

from random import randint
n = 0
while n < 5:
    n += 1
    for i in (randint(1,5),randint(9,15),randint(21,27)):
        x = i
    print i

问题答案:

不理想

from random import randint, choice

for _ in range(5):
    print(choice([randint(1,5),randint(9,15),randint(21,27)]))

正如Blender所说-更清晰的版本

from random import randint, choice

for _ in range(5):
    r = choice([(1,5),(9,15),(21,27)])
    print(randint(*r))