我正在创建一个'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!
我该如何解决这个问题?
此致
答案 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)
您的代码中的问题是您只生成一个随机数并将其打印四次