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

时间:2016-10-19 08:59:46

标签: python list random

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))

我解决了这个问题,但我觉得这很笨拙。 我怎样才能更有效,更优雅地做到这一点?

2 个答案:

答案 0 :(得分:1)

Shuffle是@jonrsharpe建议的方式:

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
  • ,则可能需要一些步骤

答案 1 :(得分:0)

只需使用shuffle:

import string

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

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