擅长:python、mysql、java
<p>使用<a href="https://docs.python.org/2/library/random.html#random.sample" rel="nofollow noreferrer">^{<cd1>}</a>生成不重复的N个元素的示例:</p>
<pre><code>random_id_list = random.sample(read_id_list, num_reads)
</code></pre>
<p>从一个大列表中删除元素确实很慢,因为索引之外的所有元素都必须向上移动一步。在</p>
<p>当然,这不会再从原始列表中删除元素,因此<em>重复的</em><code>random.sample()</code>调用仍然可以给您提供包含以前选择过的元素的示例。如果您需要重复生成示例,直到列表耗尽,那么<em>随机播放一次</em>,然后从无序列表中取出<code>k</code>元素的连续切片:</p>
^{pr2}$
<p>然后使用此方法生成您的样本;可以是在循环中,也可以是使用<code>next()</code>:</p>
<pre><code>sample_gen = random_samples(num_reads)
random_id_list = next(sample_gen)
# some point later
another_random_id_list = next(sample_gen)
</code></pre>
<p>因为列表是完全随机的,所以以这种方式生成的切片也是有效的随机样本。在</p>