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

问题描述 投票:0回答:3

我创建了一个程序,从1-10生成5个随机整数,并将它们添加到空集。出于某种原因,当我运行程序时,它有时会返回4个整数,有时则返回5个。这里发生了什么?

import random
set1 = set()

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

print(set1)
python
3个回答
1
投票

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

您应该使用列表:

import random
output = [] 

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

print(output)

0
投票

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

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

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


-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
© www.soinside.com 2019 - 2024. All rights reserved.