私はC++でいくつかの8ビット乱数を生成しようとしていますが、rand()%8や任意のスケールメソッドのような除算を使用したくありません。私はオンラインで見つける効率的なランダムなBYTESジェネレータはありますか(除算なし)?
1つのアルゴリズムは、それが部門と32ビットの乱数生成器であるPark-Miller-Carta Pseudo-Random Number Generator
です。これらの乱数を使って、私はいくつかのランダムなバイトを得ることができるようにそれらの下位または8ビットを抽出しようとしていますが、これらのビットはあまりランダムではないので、これは動作しないようです。
これを修正するためのテクニックはありますか、それともこのトリックを行うことができる他のアルゴリズムはありますか?
除算/モジュロを避けたい特定の理由はありますか? –
"%8"の使用を避けようとしていますか?そうであれば、コンパイラーは分割を使用しません。コンパイラは2の累乗を知っており、代わりに "&7"を使用します。 – BitBank
私はいくつかのシステムレベルの実験を行っています。部門が遅すぎる。 – Arthur