我有100个列表[x1..x100]
,每个列表包含大约10个项目[x_i_1,...x_i_10]
我需要生成80个向量。每个向量都是所有列表的产物,有点像itertools.product(*x)
,除了两件事:
(一)
我需要每个向量中的每一项都有一个均匀分布。
例如:
[ np.random.choice(xi) for xi in [x1..x100]]
会很好,除了我的情况:
(二)
我不能重复。
itertools.product
解决了这个问题,但它不满足条件(1)
我需要生成80个向量,使用它们,然后重新请求另一个80,并重复这个过程,直到满足某个条件。 对于所有80个大小批次的每个向量,我需要它们是一致的(条件1)和不重复的(条件2)
创建所有排列并洗牌列表对于较小的列表是一个很好的解决方案,我使用这个批处理系统是因为有大量可能的排列
有什么想法吗? 泰铢
只需使用
[np.random.choice(xi) for xi in [x1..x100]]
。同一个向量在80次试验中产生两次的概率非常小。根据birthday problem,独立于一组d
项选择的n
项将包含所选择的重复项的概率约为1 - exp(n*(n-1)/(2*d))
。在你的例子中n = 80
和d = 10**100
。由此产生的概率是0到小数点后位数大得离谱(估计意味着概率从0.000开始。。。小数点后约有1.37 x 10^97个零)。忘了80吧,你可以生成80万亿个这样的向量,但是生成同一个向量两次的概率仍然非常小相关问题 更多 >
编程相关推荐