如何从给定范围生成固定长度的随机值列表?
如何在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]