如何从给定范围生成固定长度的随机值列表?

31 投票
4 回答
75599 浏览
提问于 2025-04-16 03:14

如何在Python中生成一个随机的(但唯一且有序的)固定长度的数字列表,这些数字来自于一个给定的范围?

像这样:

>>> list_length = 4
>>> values_range = [1, 30]
>>> random_list(list_length, values_range)

[1, 6, 17, 29]

>>> random_list(list_length, values_range)

[5, 6, 22, 24]

>>> random_list(3, [0, 11])

[0, 7, 10]

4 个回答

1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某个功能不太好用,或者出现了错误。这种情况下,很多人会去StackOverflow这个网站寻求帮助。

StackOverflow是一个程序员交流的平台,大家可以在这里提问和回答问题。你可以把它想象成一个大型的问答社区,里面有很多经验丰富的程序员,他们愿意分享自己的知识和解决方案。

当你在StackOverflow上提问时,记得描述清楚你的问题,包括你遇到的错误信息、你尝试过的解决方法,以及你使用的编程语言和工具。这样其他人才能更好地理解你的问题,并给出有效的建议。

总之,StackOverflow是一个很有用的资源,可以帮助你解决编程中的各种难题,只要你善于利用它。

import random


def simplest(list_length):
    core_items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    random.shuffle(core_items)
    return core_items[0:list_length]

def full_random(list_length):
    core_items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    result = []
    for i in range(list_length):
        result.append(random.choice(core_items))
    return result
16

可以把 random.randrange 和列表推导式结合起来使用,这样就能实现你想要的效果。

import random
[random.randrange(1, 10) for _ in range(0, 4)]
63

像这样的随机样本会返回一个独特的项目列表,意思是这些项目在序列中是唯一的。不要把这和在某个范围内生成的随机整数搞混了。

>>> import random
>>> random.sample(range(30), 4)
[3, 1, 21, 19]

撰写回答