簡體   English   中英

如何有效地生成一個只包含Python中唯一數字的隨機數?

[英]How to generate effectively a random number that only contains unique digits in 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))

我解決了這個問題,但我覺得這很笨拙。 我怎樣才能更有效,更優雅地做到這一點?

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,則可能需要一些步驟

只需使用shuffle:

import string

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM