【问题标题】:How to generate random lists with no duplicate members? [duplicate]如何生成没有重复成员的随机列表? [复制]
【发布时间】:2018-11-10 04:39:38
【问题描述】:
a=[]
from random import randint as rd
for i in range(42):
    a.append(rd(1,42))
    j=0
    k=len(a)-1
    while(j<=k):
        while(a[i]==a[j]):
            a[i]=rd(1,42)
            j=0
        j=j+1

我无法弄清楚如何在 python 中生成完全唯一的随机列表。所有成员都必须是唯一的,并且不能与列表中的任何其他成员相同

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    试试这个:

    import random
    random.sample(range(100), 10)
    
    
    In [1715]: random.sample(range(100), 10)
    Out[1715]: [66, 48, 97, 5, 39, 67, 78, 96, 71, 19]
    
    In [1716]: random.sample(range(100), 10)
    Out[1716]: [50, 89, 60, 69, 81, 86, 27, 94, 4, 62]
    

    这将生成一个包含 0 到 99 范围内的 10 个随机数的列表,没有重复。

    【讨论】:

      【解决方案2】:

      在这种情况下使用shuffle

      from random import shuffle
      
      random_numbers = list(range(1, 43))
      shuffle(random_numbers)
      

      或者,您尝试使用randint

      from random import randint as rd
      
      random_numbers = []
      for i in range(42):
          r = rd(1, 42)
          while r in random_numbers:
              r = rd(1, 42)
      
          random_numbers.append(r)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 1970-01-01
        • 2016-05-15
        • 1970-01-01
        相关资源
        最近更新 更多