生成10000位随机序列

时间:2012-12-17 17:59:15

标签: python binary

在Python中生成10 kBit(10,000位)随机二进制序列比在循环中追加0和1更有效吗?

2 个答案:

答案 0 :(得分:11)

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

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

在此之后,它实际上取决于你想对二进制序列做什么。您可以使用按位运算查询各个位:

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

或者您可以使用bitarraybitstring这样的库,如果您想进行检查,设置切片等更容易:

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

答案 1 :(得分:3)

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

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个字符串。