Sco*_*ths 11
如果你想要一个随机的二进制序列,那么在适当的范围内生成一个随机整数可能是最快的:
import random
s = random.randint(0, 2**10000 - 1)
Run Code Online (Sandbox Code Playgroud)
在此之后,它实际上取决于您想要对二进制序列做什么.您可以使用按位运算查询各个位:
s & (1 << x) # is bit x set?
Run Code Online (Sandbox Code Playgroud)
或者你可以使用像bitarray或bitstring这样的库,如果你想进行检查,设置切片等更容易:
from bitstring import BitArray
b = BitArray(uint=s, length=10000)
p, = b.find('0b000000')
if b[99]:
b[100] = False
...
Run Code Online (Sandbox Code Playgroud)
numpy 包有一个子包“random”,它可以生成随机数数组。
http://docs.scipy.org/doc/numpy/reference/routines.random.html
如果你想要一个由“n”个随机位组成的数组,你可以使用
arr = numpy.random.randint(2, size=(n,))
Run Code Online (Sandbox Code Playgroud)
...但是根据您对它们所做的事情,使用例如可能会更有效
arr = numpy.random.randint(0x10000, size=(n,))
Run Code Online (Sandbox Code Playgroud)
得到一个由 'n' 个数字组成的数组,每个数字有 16 个随机位;然后
rstring = arr.astype(numpy.uint16).tostring()
Run Code Online (Sandbox Code Playgroud)
将其转换为 2*n 个字符的字符串,包含相同的随机位。