生成 10000 位随机序列



在Python中生成10 kBit(10,000位)随机二进制序列是否有比在循环中附加0和1更有效的方法?

如果你想要一个随机的二进制序列,那么在适当的范围内生成一个随机整数可能是最快的:

import random
s = random.randint(0, 2**10000 - 1)

在此之后,这实际上取决于您要对二进制序列执行的操作。您可以使用按位运算查询单个位:

s & (1 << x)  # is bit x set?

或者,如果您想使检查,设置切片等更容易,则可以使用Bitarray或Bitstring之类的库:

from bitstring import BitArray
b = BitArray(uint=s, length=10000)
p, = b.find('0b000000')
if b[99]:
    b[100] = False
...

numpy 包有一个子包"random",可以生成随机数数组。

http://docs.scipy.org/doc/numpy/reference/routines.random.html

如果你想要一个"n"个随机位的数组,你可以使用

arr = numpy.random.randint(2, size=(n,))

。但是根据您使用它们做什么,使用

例如
arr = numpy.random.randint(0x10000, size=(n,))

得到一个"n"个数字的数组,每个数字有16个随机位;然后

rstring = arr.astype(numpy.uint16).tostring()

将其转换为包含相同随机位的 2*n 个字符的字符串。

这是一个行:

import random
[random.randrange(2) for _ in range(10000)]

最新更新