擅长:python、mysql、java
<p>这里有一个基于哈希的方法来生成唯一的组合,而不是生成所有的组合,只生成所需的组合数量-</p>
<pre><code>num_comb = 100 # number of combinations needed
# We need ordered keys to maintain the indexing needed :
# Index 0 is the size, Index 1 is min_count, Index 2 is iter...
ordered_keys = ['size', 'min_count', 'iter', 'window', 'alpha','min_alpha']
lens = np.array([len(hyperparams[i]) for i in ordered_keys])
prod_lens = lens.cumprod()
idx = np.random.choice(prod_lens[-1], num_comb, replace=0)
N = len(lens)
out = np.zeros((num_comb,N),dtype=int)
r = idx
for i in range(2,N+1):
d = r//prod_lens[-i]
r = r - d*prod_lens[-i]
out[:,-i+1] = d
out[:,0] = r
</code></pre>
<p><strong>运行时测试</strong></p>
<p>目前发布的三种方法解决了无法生成所有组合的问题,而且这些方法是真正随机的-@norok2-Edit1,@scnerd,还有一种方法在这篇文章中发布了三组输出长度-</p>
^{pr2}$