如何在Python中有效地生成只包含唯一数字的随机数?

2024-04-19 11:51:38 发布

您现在位置:Python中文网/ 问答频道 /正文

import random

def get_number(size):
  result = [random.randint(1,9)]
  digits = list(range(0,10))
  digits.remove(result[0])
  if(size > 1):
    result += random.sample(digits,size-1)
  return ''.join(map(str,result))

print(get_number(4))

我解决了这个问题,但我觉得它很笨拙。 如何才能更有效、更优雅地完成这项工作?你知道吗


Tags: sampleimportnumbersizegetreturnifdef
2条回答

洗牌是@jornsharpe建议的方法:

import random

def get_number(size):
    l = [ str(i) for i in list(range(10))]
    while l[0] == '0':
        random.shuffle(l)
    return int("".join(l[:size]))

限制:

  • 如果你要求的数字超过10位数,你只能得到10位数
  • 如果第一个数字最初是0,它可以采取一些步骤

只需使用shuffle:

import string

x = list(string.digits)
random.shuffle(x)

print int(str(random.choice(range(1, 10))) + "".join(x[:3]))

相关问题 更多 >