的M非重叠样本(子序列)。
,例如,如果任务是选择3个尺寸3的样本,则解决方案之一将是:[3, 4, 5]
[8, 9, 10]
[11, 12, 13]
我的算法:
选择随机第一个样本:
[11, 12, 13]
输入数据是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[14, 15, 16]
。
[3, 4, 5]
。输入数据(足够大)是
[6, 7, 8, 9, 10]
和[14, 15, 16]
从剩余的输入数据中选择随机第三个样本:
[8, 9, 10]
,当样品太大时,该算法不起作用。如果任务是选择3个尺寸5的样本,则存在一个解决方案,但是如果您使用我的算法并随机选择第一个样本为
[3, 4, 5, 6, 7]
,则该算法将失败。
您可以利用整个输入列表作为您的来源构建长度n列表。您的源列表的长度可能不是N的倍数,因此您需要考虑到这一点。到达:
import random
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
M = 3
N = 3
subs = []
for i in range(0, (len(data) // N) * N, N):
subs.append(data[i:i+N])
if len(subs) < M:
print("Can't be done")
else:
for _ in range(M):
s = random.choice(subs)
print(s)
subs.remove(s)