【问题标题】:How to generate unique random numbers from a list如何从列表中生成唯一的随机数
【发布时间】:2019-09-28 08:16:56
【问题描述】:

我知道我应该像下面的代码那样为随机数编写代码,但我不知道如何生成唯一号码,例如我想一次从一个列表中生成 3 个唯一电话号码,我该怎么做做吗?

import random  

# last numbers of the phone numbers are in order, 1,2,3,4,5,6
myList = [60165651, 60175652, 60156523, 60135354, 60159535, 60192326]  

for x in range(5): 
    print(random.choice(myList))

----------------------------------------------- ------

另一个问题是,如果我在数字的开头输入零,我会得到一个错误:令牌无效!

例如:

myPhoneList = [060165651, 60175652, 60156523, 60135354, 60159535, 60192326]

【问题讨论】:

  • 您正在尝试sample输入数字列表,而不是generate它(作为输出)。
  • 而对N个唯一项进行抽样称为无替换抽样。请参阅random.sample的文档
  • 第二期:将零放在数字的开头告诉 Python 它是八进制(base-8),但是你的数字不能包含数字 8,9,这就是它抛出错误的原因。与this 重复。因此,如果您真的想要一个带前导零的十进制电话号码,请使用字符串列表,而不是整数。
  • 有一个特殊的模块faker来生成一个假数据。您也可以使用它来获取假号码。

标签: python list random unique


【解决方案1】:

使用random.sample:

返回从总体中选择的唯一元素的 k 长度列表 序列或集合。用于无放回的随机抽样。

from random import sample

myList = [60165651, 60175652, 60156523, 60135354, 60159535, 60192326]  
print(sample(myList, 3))
# [60192326, 60165651, 60175652]

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2018-01-05
    • 2011-07-06
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多