【问题标题】:How do I generate random but unique numbers in python?如何在 python 中生成随机但唯一的数字?
【发布时间】:2018-06-23 02:41:41
【问题描述】:

我想生成一个随机数,并且该随机数应该是唯一的,这意味着它不应重复或再次生成。我尝试制作一个列表,我在每次迭代中追加并检查它是否已经存在于列表中。如果它存在于列表中,则不附加该数字。但我不认为这是一种有效的方法。所以,请帮帮我。

    import random
    #an empty list to append randomly generated numbers
    empty = []
    while True:
        #checking from range 500 to 510
        number = random.randrange(500, 510)
        if number not in empty:
            empty.append(number)
        else:
            pass
        #breaking the loop if the length of the numbers is 9
        if len(empty) == 9:
            break

    print("Final list --> " + str(empty))

【问题讨论】:

  • 你应该生成一个你需要的所有随机数的列表,然后随机播放它们。否则,您将需要不断生成随机数,直到获得不在列表中的随机数(这对于大量数字列表非常耗时)
  • @GarbageCollector 在此问题的范围内,值将是唯一的,因为 shuffle 函数将传递 OP 所需的值范围,这些值都是唯一的。
  • @Ajax1234 同意。
  • 在您的情况下,您可能只能选择 1 个随机元素并将其排除在外,还是顺序很重要?
  • 这能回答你的问题吗? Generate 'n' unique random numbers within a range

标签: python random


【解决方案1】:

您可以通过random.sample从给定池中获取给定数量的非重复元素的列表:

>>> random.sample(range(500, 510), 9)
[500, 501, 503, 502, 505, 507, 508, 506, 504]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多