问题:生成大型二进制字符串(长度 2000+)。动作要快,因为该generateRandom()函数将在算法中被调用300,000次。
尝试的解决方案:生成 3 或 4 个二进制数并将它们全部附加在一起 500 次。这太慢了。
对 random.random() 进行一次调用并将其乘以一个巨大的数字。转换为二进制一次即可完成。这适用于较小的数字,但由于二进制字符串必须具有一定的长度,因此要转换为二进制的数字必须非常巨大(2 ** len(binString))。
当前代码(适用于较小的数字):
binaryRepresentation = ''
binaryRepresentation += bin(int(random.random() * (2 ** binLength)))[2:].zfill(binLength)
Run Code Online (Sandbox Code Playgroud)
我需要帮助修复的错误:此调用会抛出一个“长整型太大,无法转换为浮点数”和大量数字。有没有办法使整个算法更高效或使这个大数字可以转换为浮点数?
谢谢你!