生成除特定数字之外的范围内的随机不重复数字[重复]

问题描述 投票:0回答:1

我需要在Python中生成随机数。结果应该是这样的形式:

(9, 15)
(6, 11)
(2, 2)
(17, 15)
(18, 3)

行中的第一个数字 - 1..20 范围内的非重复随机数(3 和 5 除外),第二个数字 - 1...15 范围内的任何随机数

我能够生成带有排除项的随机数,但我不知道如何从行中第一个数字的结果中排除重复项:

for i in range(0, 5):
    from random import choice
    mm = choice([i for i in range(1, 21) if i not in [3, 5]])
    nn = random.randint(1, 15)
    result = mm, nn
    print(result)

所以我得到这样的信息:

(9, 15)
(17, 11)
(2, 2)
(17, 15)
(18, 3)

在给出的示例中,数字 17 不应出现多次。

如有任何帮助,我们将不胜感激。谢谢!

python random
1个回答
0
投票
import random

used_numbers = set()

for _ in range(5):
    available_numbers = [i for i in range(1, 21) if i not in [3, 5] and i not in used_numbers]
    
    if not available_numbers:
        # Reset used_numbers set if all eligible numbers have been used
        used_numbers = set()
        available_numbers = [i for i in range(1, 21) if i not in [3, 5] and i not in used_numbers]
    
    mm = random.choice(available_numbers)
    used_numbers.add(mm)
    
    nn = random.randint(1, 15)
    result = (mm, nn)

    print(result)
© www.soinside.com 2019 - 2024. All rights reserved.