繁体   English   中英

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

[英]How to get unique numbers using randomint python?

我正在创建一个“欧洲百万富翁彩票生成器”,只是为了好玩,我不断打印出相同的数字。 我如何做到这一点,以便获得随机数,而永远不会弹出相同的数字:

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!

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

问候

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

而是生成几个数字:

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)

设置一组数字,然后将其洗牌并切成薄片。

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

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)))

您应该致电randint 5次以获取您的幸运数字。 您只需调用一次,并显示5次结果。

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


random.sample(range(50),6)
会产生0至49范围内的6个不同的数字

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

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM