我想从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]
但我希望rd1
和rd2
没有共同的元素,比如:
[1, 3, 9, 6, 8]
[2, 4, 0, 7, 5]
或
[0, 2, 9, 6, 1]
[3, 4, 8, 7, 5]
random采用可迭代的,因此生成第一个列表,然后进行小过滤以从第一个随机列表中排除项目:
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, 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)