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

时间:2013-06-25 10:17:55

标签: python loops random while-loop int

我正在创建一个'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

输出只是:

>>> Your lucky numbers are:  41 41 41 41 41
>>> Your lucky stars are:  8 8
>>> Good bye!

我该如何解决这个问题?

此致

6 个答案:

答案 0 :(得分:7)

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

生成几个数字:

print "Your lucky numbers are: ", randint(1,50), randint(1,50), randint(1,50), randint(1,50), randint(1,50)

或生成一个列表:

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

或者更好的是,生成所有允许的数字(使用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))

现在numbers保证包含完全唯一的数字。

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

答案 1 :(得分:6)

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

from random import shuffle
numbers  = list(range(1,51))
shuffle(numbers)
draw = numbers[:6]
print(draw)

答案 2 :(得分:1)

numbers = randint(1,50)为变量分配一个随机数。而且你反复使用这个随机数。 stars

也是如此

请改为尝试:

print "Your lucky numbers are: ", randint(1,50), randint(1,50), randint(1,50), randint(1,50), randint(1,50) 

或者您可以创建一个数字列表并获得随机样本:

numbers = range(1,50)
print "Your lucky numbers are: ", ' '.join(map(str, random.sample(numbers, 5)))

答案 3 :(得分:0)

你应该拨打randint 5次你的幸运号码。您只需调用一次,并显示结果5次。

答案 4 :(得分:0)

你可以使用
random.sample(range(range_to_which_random_be_generated), number_of_numbers_to_generate)

示例
random.sample(range(50),6)
将在0到49范围内生成6个不同的数字

答案 5 :(得分:0)

我建议的一种方法是将生成的数字放在一个列表中,并在将其添加到列表之前检查下一个数字是否不在列表中

numbers=[randint(1,50)]
i=1
while i<n:  # n is the number of random numbers you want to generate
    x=randint(1,50)
    if not x in numbers:
        i+=1
        numbers.append(x)

您的代码中的问题是您只生成一个随机数并将其打印四次