Python 如何从一个范围内获得两个不同的随机样本

Python 如何从一个范围内获得两个不同的随机样本,python,random,range,Python,Random,Range,我想在python中从一个范围中获取两个不同的随机样本。 我试过这样的方法: rd1 = random.sample(range(0, 10), 5) rd2 = random.sample(range(0, 10), 5) print(rd1) print(rd2) 输出: [2, 4, 7, 6, 8] [2, 4, 0, 7, 5] [2, 6, 9, 5, 0] [4, 1, 3, 8, 7] 但是我希望rd1和rd2没有如下公共元素: [1, 3, 9, 6, 8] [2, 4

我想在python中从一个范围中获取两个不同的随机样本。
我试过这样的方法:

rd1 = random.sample(range(0, 10), 5) 
rd2 = random.sample(range(0, 10), 5)
print(rd1)
print(rd2)
输出:

[2, 4, 7, 6, 8]
[2, 4, 0, 7, 5]
[2, 6, 9, 5, 0]
[4, 1, 3, 8, 7]
但是我希望
rd1
rd2
没有如下公共元素:

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


random接受一个iterable,因此生成第一个列表,然后执行一个小的筛选以从第一个随机列表中排除项目:

import random
rd1  = random.sample(range(0, 10), 5)

rd2  = random.sample([i for i in range(0, 10) if i not in rd1], 5)

print(rd1)
print(rd2)
输出:

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

获取一个长度为两倍的样本,然后将其分成两半,如下所示:

rd = random.sample(range(0, 10), 10)
rd1, rd2 = rd[:5], rd[5:]
print(rd1)
print(rd2)
示例输出:

[5, 7, 1, 6, 3]
[2, 9, 4, 8, 0]
顺便说一句,您也可以使用
random.shuffle
获得
rd

rd = list(range(0, 10))
random.shuffle(rd)

您能否生成一个长度为两倍的随机范围,然后将其拆分为两半?生成一个列表以从中提取样本,然后将所有样本提取到一个列表中,然后将列表拆分为两个。有趣的我们都有相同的想法。或者<代码>li=列表(范围(10));随机。洗牌(李);rd1=li[:5];rd2=li[-5:][/code>