ランダムに生成された、1千万以上の1と0を含むデータファイルがあるとします。
このファイルから、ランダムな10進整数のリストを作成します。
これは、この変換を行う計画です。
- 8000万桁を4つの2進数のグループに分けます。
- 各4桁のバイナリを10進数に変換します。
- 9より大きいすべての10進数値を破棄します。
これにより、0〜9のランダムな整数の文字列が生成されます。
ここに懸念があります。10から15の値に対応する4つの2進数の6つのグループを構成する24の2進数には、1が17、0が7のみ含まれます。この不均衡は、偶数と奇数の整数の分布に影響を及ぼしますか、または何らかの方法で10進数の最後の文字列のランダム性を損ないますか?
更新:投稿された回答から、上記で列挙した方法は適切であるようです。私はその結論に同意します。ただし、バイナリ文字列からゼロの2倍を超える数を削除しても、結果が奇数の少ない方に偏らない理由はまだわかりません。説明を求めます。
9
より効率的な方法があります。たとえば、ビット文字列を10のグループに分割し、それらを3桁表現の基数10に変換し、1000以上の値を持つものを破棄できます。これは、62.5%のビットではなく97.6%のビットを使用します。それ以上のことはできません。(681のグループを使用して、それらを205桁の10進数の文字列に変換し、ビットのほぼ99.7%を利用することができます。)
—
whuber