擅长:python、mysql、java
<p>不管是随机抽样还是随机抽样,至少你会在某个地方随机抽样。如果K小于N/2,并且N不是太大(比如1亿或更少),那么可以使用下面的python代码,因为它一次生成K psuedo随机对,从而避免重复的采样调用</p>
<pre><code>import random
X = range(N)
random.seed() # uses system time to initialize random number generator, or you can pass in a deterministic seed as an argument if you want
# code to use to generate K pairs
A = random.sample(X,2*K) # now you have a list of 2*K unique elements from 0 to N-1
pairs = zip(A[0:K],A[K:(2*K)]) # now you have your pairs
</code></pre>
<p>现在,如果K大于N/2,那么必须有重复项,但是可以通过简单地在循环中重新运行类似于上面两行的代码来最小化类似于上面的两行代码。如果N是奇数,这会带来麻烦,但一个简单的非常接近的策略是重复生成floor(N/2)对(避免重复),每次只保留一个未使用的数字。代码如下:</p>
^{pr2}$