2012-02-17 12 views
0

私はC++でいくつかの8ビット乱数を生成しようとしていますが、rand()%8や任意のスケールメソッドのような除算を使用したくありません。私はオンラインで見つける効率的なランダムなBYTESジェネレータはありますか(除算なし)?

1つのアルゴリズムは、それが部門と32ビットの乱数生成器であるPark-Miller-Carta Pseudo-Random Number Generator

です。これらの乱数を使って、私はいくつかのランダムなバイトを得ることができるようにそれらの下位または8ビットを抽出しようとしていますが、これらのビットはあまりランダムではないので、これは動作しないようです。

これを修正するためのテクニックはありますか、それともこのトリックを行うことができる他のアルゴリズムはありますか?

+0

除算/モジュロを避けたい特定の理由はありますか? –

+0

"%8"の使用を避けようとしていますか?そうであれば、コンパイラーは分割を使用しません。コンパイラは2の累乗を知っており、代わりに "&7"を使用します。 – BitBank

+0

私はいくつかのシステムレベルの実験を行っています。部門が遅すぎる。 – Arthur

答えて

0

32ビットランダム整数の4バイトをXORするのはどうですか?

+0

あなたの答えをありがとう。 XORの下位8ビットに上位8ビットを使用することを意味しましたか? – Arthur

+0

私は下位8ビットに移行すると思います。皆さん、ありがとうございました。 – Arthur

関連する問題