Range(5)返回4或5个随机整数

时间:2019-04-02 02:41:26

标签: python

我创建了一个程序,可以从1-10生成5个随机整数,并将它们添加到一个空集中。由于某种原因,当我运行该程序时,有时会返回4个整数,而其他时候返回5。这是怎么回事?

import random
set1 = set()

for x in range(5):
    integer = random.randint(1,10)
    set1.add(integer)

print(set1)

3 个答案:

答案 0 :(得分:1)

您使用的是集合,集合不能包含重复项,如果两次生成相同的数字,则集合中只会出现一次,理论上您的输出中可能只有一个数字(如果相同的数字被添加了5次)。

您应该改为使用列表:

import random
output = [] 

for x in range(5):
    integer = random.randint(1,10)
    output += [integer] 

print(output)

答案 1 :(得分:0)

生成n随机唯一数字的最简单方法是使用random.sample

>>> import random
>>> set(random.sample(range(1, 11), 5))
set([8, 9, 5, 6, 10])

请注意,如果您还想包含数字range(1, 11),则应使用10

答案 2 :(得分:-1)

Python集不会显示重复项。修复脚本的一种简单方法是使用列表而不是集合。但是要注意的一件事是,如果您要像12345一样使用所有数字,那么就不会成功了。以下脚本将以[1, 2, 3, 4, 5]的形式返回列表。

list1 = [] # Make an empty list

for x in range(5): 
    # randomly choose a number from 1 - 10 and append it to our list 5 times
    integer = random.randint(1,10)
    list1.append(integer)

print(list1) # print the list