擅长:python、mysql、java
<p>为什么不使用简单的循环赛:</p>
<pre><code>g = itertools.cycle(fruits)
for basket in baskets:
basket['fruit1'] = next(g)
basket['fruit2'] = next(g)
</code></pre>
<p>通过设计使分布均衡。唯一需要注意的是,一旦你知道什么是一个篮子里的水果1,水果2就会自动确定。如果您不喜欢,您可以为每种可能的水果使用下一种水果:</p>
<pre><code>g = itertools.cycle(fruits)
fruit_iter = {}
for i, fruit in enumerate(fruits):
fruit_iter[fruit] = itertools.cycle(fruits[i+1:] + fruits[:i])
for basket in baskets:
fruit = next(g)
basket['fruit1'] = fruit
basket['fruit2'] = next(fruit_iter[fruit])
</code></pre>
<p>对于第一个篮子,每个水果后面紧跟着下一个,但一旦其中一个被重新用作<code>fruit1</code>,相应的<code>fruit2</code>就会是下一个。这里绝对没有随机性,但分布覆盖了所有可能的情况,概率相当(发生率)</p>