在Python中生成随机的6位ID

在Python中生成随机的6位ID,python,random,Python,Random,我有一个问题数据库。我想用6位ID标记它们 我曾尝试将uuid.uuid1()与int()一起使用,但它会生成一个128位整数,这太长了 我还尝试使用了random(),但该随机整数不能将数字“0”作为第一个数字 身份证: 可以以数字“0”开头 前3位和后3位之间有一个空格 必须是唯一的(随机ID) 例如,问题1可以标记为050 124 我如何创建这样的随机ID 实际上,前3位和后3位之间的空格并不重要。因此,如果有困难,请告诉我如何创建一个随机的6位数字(可以以“0”开头)这一行就可以做到

我有一个问题数据库。我想用6位ID标记它们

我曾尝试将
uuid.uuid1()
int()
一起使用,但它会生成一个128位整数,这太长了

我还尝试使用了
random()
,但该随机整数不能将数字“0”作为第一个数字

身份证:

  • 可以以数字“0”开头
  • 前3位和后3位之间有一个空格
  • 必须是唯一的(随机ID)
例如,问题1可以标记为050 124

我如何创建这样的随机ID


实际上,前3位和后3位之间的空格并不重要。因此,如果有困难,请告诉我如何创建一个随机的6位数字(可以以“0”开头)

这一行就可以做到:

import random

random_id = ' '.join([str(random.randint(0, 999)).zfill(3) for _ in range(2)])
但要实现唯一性,需要知道如何检查它的细节。例如,如果要使用原始SQL将其写入数据库,则需要首先进行检查,例如
从my_表中选择id,其中id=%s
,其中
%s
是生成的id。如果它已经存在,则需要再次生成它。基本上你可以这样做:

while True:
    uid = ' '.join([str(random.randint(0, 999)).zfill(3) for _ in range(2)])
    if uid_exists(uid):  # Your function to check if it already exist
        continue
    write_your_record(uid)  # Do something next if not

这将生成以零开始的随机数字:

import numpy as np
''.join(map(str,np.random.randint(0,9,3))) + ' ' + ''.join(map(str,np.random.randint(0,9,3)))                                                                                        

# '050 645'

过长应该不是问题,您总是可以非常容易地裁剪字符串。比如说,您的random()uuid()数字将位于一个变量
randNum

ID = f"{randNum:06}"[-6:]
这将把你的随机数变成一个字符串,如果数字太短,在开头加上零。然后只需要最后6位数字。如果您坚持使用空间:

ID = f"{randNum:06}"
ID = ID[-6:-3] + " " + ID[-3:]

请添加一小段代码或您尝试过的任何代码。到目前为止您尝试了什么?+独特和随机是两个不同的东西。这里的大局是什么?为什么它必须是随机的?我有一个问题数据库,我想标记它们,所以每个问题的ID必须是唯一的。但它是吗?。。你也必须做一些填充;按照现在的方式,它可以返回一些我们不想要的东西,比如
97341
。我没有因为它的价值而投反对票。
random
没有定义,可能不是每个人都清楚它是什么。此外,任何生成的小于100的三位数字都不会显示0。示例:
4121
25609
@Ev.Kounis哦,我的错,让我来修正一下,有时候我会得到这样的“7292”ID。应该是720920吧?我该如何解决这个问题?@Andrew Vangeance我已经用
.zfill(3)
在我的回答中解决了这个问题,为什么要用numpy做这么简单的事情呢?这不是答案。与唯一性无关,也与如何生成
randNum
无关。我不同意这种说法:这就是答案!你从哪里得到独特性?那不是问题所在。。。用户问“如果有困难,请告诉我如何创建一个随机的6位数字(可以以“0”开头)。”。。。所以这就是我所展示的——在我看来,这是一个很好的python;-)