【发布时间】:2016-10-19 08:59:45
【问题描述】:
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))
我解决了这个问题,但我觉得它很笨拙。 我怎样才能更有效、更优雅地做到这一点?
【问题讨论】:
-
取所有数字 (
string.digits),随机打乱它们 (random.shuffle),切片到所需长度 (...[:size])。 -
严格来说,对整个列表进行洗牌是不必要的工作。您不需要重新排列您不会返回的数字。
shuffle的变体是否会产生给定大小的随机子集?