如何使用randomint python获取唯一数字?

use*_*572 0 python random int loops while-loop

我正在创建一个'Euromillions彩票发生器'只是为了好玩,我不断打印出相同的数字.我该如何制作它以便我得到随机数字并且永远不会弹出相同的数字:

from random import randint

numbers = randint(1,50)

stars = randint(1,11)


print "Your lucky numbers are: ", numbers, numbers, numbers, numbers, numbers

print "Your lucky stars are: " , stars, stars
Run Code Online (Sandbox Code Playgroud)

输出只是:

>>> Your lucky numbers are:  41 41 41 41 41
>>> Your lucky stars are:  8 8
>>> Good bye!
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

问候

Mar*_*ers 7

您正在生成一个数字,然后多次打印出来.

生成几个数字:

print "Your lucky numbers are: ", randint(1,50), randint(1,50), randint(1,50), randint(1,50), randint(1,50)
Run Code Online (Sandbox Code Playgroud)

或生成一个列表:

numbers = [randint(1,50) for _ in range(5)]
print "Your lucky numbers are: ", ' '.join(numbers)
Run Code Online (Sandbox Code Playgroud)

或者更好的是,生成所有允许的数字(range()然后使用从中选择一个样本:

possible_numbers = range(1, 51)  # end point is not included
numbers = random.sample(possible_numbers, 5)
print "Your lucky numbers are: ", ' '.join(map(str, numbers))
Run Code Online (Sandbox Code Playgroud)

现在numbers保证由完全唯一的数字组成.

numbers变量不会奇迹般地更新每次打印它,因为它仅仅是指时间的结果random.randint(1, 50).

  • @AswinMurugesh:是的,的确,这就是为什么我的答案包含有关如何做到这一点的信息.但是你不能只把代码扔给那些仍在掌握基本概念的人. (2认同)

小智 6

设置一组数字,然后随机播放并切片.

from random import shuffle
numbers  = list(range(1,51))
shuffle(numbers)
draw = numbers[:6]
print(draw)
Run Code Online (Sandbox Code Playgroud)

  • 注意`random.sample()`在Python 3中使用`range()`,或在Python 2中使用`xrange()`,因为它实现了`__len__`和`__getitem__`(它是一个正确的序列对象) ). (3认同)