0

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

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

问候

4

6 回答 6

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)

于 2013-06-25T10:19:34.327 回答
6

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

from random import shuffle
numbers  = list(range(1,51))
shuffle(numbers)
draw = numbers[:6]
print(draw)
于 2013-06-25T10:20:13.167 回答
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)))
于 2013-06-25T10:19:20.347 回答
0

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

于 2013-06-25T10:19:30.937 回答
0

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

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

于 2013-06-25T10:21:23.837 回答
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)

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

于 2013-06-25T10:22:15.383 回答