如何确保所有随机数至少使用一次,从而得到一个随机数列表?

2024-03-28 18:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到一个从1到10的数字列表,其中出现了很多次,因此我开始使用以下代码:

list(range(1,11))

但是,它只给出每个数字一次。我需要一个两倍大小的输出,其中一半是任意排列的数字,另一半应该是给定范围内的随机数,如下所示:

[1,2,3,4,5,6,7,8,9,10,3,4,2,7,5,7,5,2,8,9]

我的方法是:

1)随机列表

a = random.randint(0,9)

2)结合量程输出

b = list(range(1,11))
result = a+b

有没有可能换一种方式呢?你知道吗


Tags: 方法代码列表方式range数字randomresult
3条回答

使用内置的random。你知道吗

import random

my_list = list(range(1,11))
for i in range(10):
    my_list.append(random.randint(0, 10))

print(my_list)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 6, 5, 10, 8, 6, 10, 6, 5, 6, 6]

有什么问题吗:

import random

your_array = list(range(1, 11)) + random.sample(range(1, 11), 10)  
#  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 7, 8, 2, 1, 9, 5, 10, 6, 4]

再读一遍。。。如果你想在第二部分重复,你可以这样做:

your_array = list(range(1, 11)) + [random.randrange(1, 11) for _ in range(10)]
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 8, 1, 5, 1, 10, 5, 2, 10]
import random

l = [x for x in range(11)] + [random.randint(0, 10) for x in range(11)]

编辑 如果希望列表的后半部分只包含前半部分中的元素,但顺序是随机的

a = [x for x in range(11)]
b = a[:]
random.shuffle(b)
a.extend(b)

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 7, 4, 10, 1, 5, 9, 3, 0, 6, 2, 8]

相关问题 更多 >