从整数范围中获取随机整数

get random integers from range of integers

我需要从具有特定数量整数 (number_of_ints) 的范围(开始、停止)中列出唯一的随机整数。 所以基本上一个函数 get_unique_random_integers(1, 100, 10) 应该 return 一个包含 10 个整数的列表,例如[93、23、6、26、90、29、59、12、15、86]。还需要使用while循环和randint函数。

到目前为止我写了这个但是功能是 returning None.

import random
def get_unique_random_integers(start, stop, number_of_ints):
    random_list = []
    while int(start) < int(stop):
        res = random.randint(start, stop)
        if res not in random_list:
            start += 1
    return random_list.append(res*number_of_ints)
print(get_unique_random_integers(1, 100, 10))

return random_list.append(res*number_of_ints).

.append() 是一个就地函数,它 return 是 None 即 return 什么都没有。于是就变成了return None.

您应该先将元素添加到列表中,然后 return 它:

random_list.append(res*number_of_ints)
return random_list

此外,return 标记函数的结束。因此,只有一个元素会被 returned。您应该将 return return random_list 移到循环之外。

import random
def get_unique_random_integers(start, stop, number_of_ints):
    random_list = []
    start1=0
    while start1 < int(number_of_ints):
        res = random.randint(start, stop)
        if res not in random_list:
            start1 += 1
            random_list.append(res*number_of_ints)
    return random_list
print(get_unique_random_integers(1, 100, 10))

这里 while 是检查 number_of_ints 并将其减 1。 只需将结果附加到列表 random_list.append(res).

import random
def get_unique_random_integers(start, stop, number_of_ints):
    random_list = []
    while number_of_ints:
        res = random.randint(start, stop)
        if res not in random_list:
            random_list.append(res)
        number_of_ints -= 1
    return random_list
print(get_unique_random_integers(1, 9, 5))

您可以在此处使用 random.sample,因为 random.sample 从给定的样本中选择给定数量的选择而不进行替换。

示例:-

import random

start = 5
end = 10
number_of_ints = 3

print(random.sample(range(start, end + 1), number_of_ints))
# prints [5, 9, 7]