如何生成一个不以 0 开头且具有唯一数字的随机 4 位数字?

新手上路,请多包涵

这几乎可以正常工作,但数字有时以 0 开头:

 import random
numbers = random.sample(range(10), 4)
print(''.join(map(str, numbers)))

我找到了很多例子,但没有一个能保证序列不会以 0

原文由 Menon A. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 641
2 个回答

我们生成 1 - 9 范围内的第一个数字,然后从剩余数字中取出接下来的 3 个数字:

 import random

# We create a set of digits: {0, 1, .... 9}
digits = set(range(10))
# We generate a random integer, 1 <= first <= 9
first = random.randint(1, 9)
# We remove it from our set, then take a sample of
# 3 distinct elements from the remaining values
last_3 = random.sample(digits - {first}, 3)
print(str(first) + ''.join(map(str, last_3)))

生成的数字是等概率的,我们一步得到一个有效数字。

原文由 Thierry Lathuille 发布,翻译遵循 CC BY-SA 3.0 许可协议

循环直到你有你喜欢的东西:

 import random

numbers = [0]
while numbers[0] == 0:
    numbers = random.sample(range(10), 4)

print(''.join(map(str, numbers)))

原文由 aghast 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题