問題:大きなバイナリ文字列 (長さ 2000 以上) を生成します。この generateRandom() 関数はアルゴリズムで 300,000 回呼び出されるため、すばやく実行してください。
試行された解決策: 3 つまたは 4 つの 2 進数を生成し、それらをすべて 500 回追加します。これは非常に遅いです。
random.random() を 1 回呼び出して、それを巨大な数で乗算します。一度バイナリに変換すれば完了です。これは小さい数値に対しては機能しますが、バイナリ文字列は特定の長さでなければならないため、バイナリに変換する数値は非常に大きくなければなりません (2 ** len(binString))。
現在のコード (小さい数字で機能します):
binaryRepresentation = ''
binaryRepresentation += bin(int(random.random() * (2 ** binLength)))[2:].zfill(binLength)
修正の助けが必要なエラー:この呼び出しは、大きな数値で「long int too large to convert to float」をスローします。アルゴリズム全体をより効率的にする方法や、この大きな数を float に変換できるようにする方法はありますか?
ありがとうございました!