首页 > 解决方案 > 生成一个随机数,避免给定列表中的重复项

问题描述

我正在做一个项目,我需要编写一个函数来为我们公司的每个客户生成 ID。已经有一个现有的客户列表,其中一些客户的 ID 为 5 到 6 位数字,范围从 40,000 到 200,000。还有其他没有 ID 的现有客户,我想与现有的 ID 号码(例如 43606 或 125490)保持一致。

因此,为了保持类似的格式,我创建了一个Exclusion_List包含所有现有 ID 号的格式。然后我打算编写一个函数,使用np.random.uniform(low=40000, high=200000)它在该范围内生成一个看起来与其他 ID 号相似的数字。

我遇到的问题是我不知道如何设置一个循环来检查随机生成的 ID 是否已经在排除列表中,如果是的话;然后生成一个新的。

这是我到目前为止所拥有的:

exclusions = [43606,125490,...]

def ID_Generator(new_clients): # This is a list of new client

  new_client_IDs = []

  for client in new_clients:

    ID = int(np.random.uniform(low=40000, high=200000))

    while ID not in exclusions:

      new_client_IDs.append(ID)

当随机生成的数字在排除列表中时,我不确定如何处理这种情况。我希望该函数输出一个数据框,其中一列中包含客户端名称,第二列中包含 ID 号。

感谢您对此的任何帮助!

标签: pythonnumpy

解决方案


我现在能想到的简单方法是。

  1. 从 生成列表40000-200000
  2. exclusions从上面的列表中删除所有。
  3. 从剩余列表中随机选择任何 id(如果顺序很重要,请按顺序使用 id)。

import random exclusions = [43606,125490] all = range(40000,200000) remaining = [x for x in all if x not in exclusions] random.choice(remaining)


推荐阅读