擅长:python、mysql、java
<p><code>random.randrange</code>真的太慢了吗?让我们看看它到底有多慢。在</p>
<pre><code>import random
word_size = 2048
word_max = 2 ** word_size
def random_bits(n):
"""
Return a string consisting of `n` zeroes and ones (chosen randomly).
"""
def words():
s, m, r = word_size, word_max, n % word_size
for _ in range(n // s):
yield bin(random.randrange(m))[2:].zfill(s)
yield bin(random.randrange(2 ** r))[2:].zfill(r)
return ''.join(words())
>>> from timeit import Timer
>>> Timer(lambda:random_bits(2000)).timeit(number=300000)
9.680696964263916
</code></pre>
<p>对于选择6亿随机位来说,10秒似乎不是一个荒谬的时间。所以也许你可以多说一下你的速度要求。这真的太慢了吗?在</p>