我创建了一个程序,可以从1-10生成5个随机整数,并将它们添加到一个空集中。由于某种原因,当我运行该程序时,有时会返回4个整数,而其他时候返回5。这是怎么回事?
import random
set1 = set()
for x in range(5):
integer = random.randint(1,10)
set1.add(integer)
print(set1)
答案 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