擅长:python、mysql、java
<p>洗牌两个数组,然后采取你需要的元素,一个接一个。或者,如果你不想让原稿受到干扰,可以对它们进行取样:</p>
<pre><code>Q=("but","why","okay")
J=("J1","J2","J3","J4","J5")
S=[(J,), (J,Q,J), (J,Q,J,Q,J), (J,Q,J,Q,J,Q,J)]
from random import sample, choice
from collections import Counter
seq = choice(S)
iters = { s: iter(sample(s, c)) for s, c in Counter(seq).items() }
result = ' '.join(next(iters[s]) for s in seq)
</code></pre>
<p>所以我先选择想要的序列。然后我计算每个列表在所选序列中出现多少次。然后,对于每个唯一的列表,我取序列中列表出现的任意多个随机元素(不重复),然后为这些选择生成一个迭代器,这样我就可以一个接一个地得到它们。剩下要做的最后一件事是遍历序列,并从适当的迭代器中获取下一个元素。你知道吗</p>