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

2024-03-28 18:54:06 发布

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

我想在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]

但是我希望rd1rd2没有如下公共元素:

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

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

Tags: sample方法元素rangerandomprintrd1rd2
2条回答

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

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)

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, 6, 9, 5, 0]
[4, 1, 3, 8, 7]

相关问题 更多 >