import random
n = 3
index = [i+1 for i in range(10) ]
slices = sorted(random.sample(range(0, len(index)), 2*n))
[index[start:end] for start, end in zip(slices[::2], slices[1::2])]
from random import choice
from numpy import arange
index = [i + 1 for i in range(365)]
choices = []
seen = set()
ar = arange(0.05,.16, .01)
ln = len(index)
sample_size = 0
while sample_size < ln * .30:
perc = choice(ar) # get random 5, 10, 15 percent slices
size = int(ln * perc)
ch = choice(index[:-size+1]) # avoid falling off the side
rn = index[ch:ch+size]
if len(rn) == size and not seen.intersection(rn):
seen.update(rn)
choices.append(rn)
sample_size += len(rn)
print(choices)
这里有一个解决方案,它象征性地处理范围,而不是考虑每一项。在
(对于您正在处理的小基础来说,这可能是一种过度杀伤力,但是对于包含数万个项目的范围来说,它的效率会大大提高。)
编辑:我已经更新了它,允许将length指定为整数或返回整数的0参数函数。你现在可以把长度作为一个分布,而不仅仅是一个常数。在
那么
^{pr2}$它给人的感觉是
可以像
给予
您可以:
我们需要一个while循环,以确保不会重叠,并且您可以检查切片的长度是否满足任何其他条件,使用列表比较,您不能指定不同的条件: 如果您希望随机切片约占列表总大小的5%到15%,样本大小约为30%:
相关问题 更多 >
编程相关推荐