4

ランダムな unsigned char 値を生成する方法を考えていました。私の考え;
rand()%255;unsigned chars は 0 ~ 255 をサポートするためです。この方法を改善できるかどうか疑問に思っていました(または、これを行うための最も正当な方法ですか)

4

5 に答える 5

5

はるかに速く簡単になります

unsigned char a = (unsigned char) rand();

または、生成された整数 (32 ビット アーキテクチャの場合) を 4 シフトして、呼び出しを 4 倍に減らすこともできますrand()

int a = rand();
unsigned char r1 = (unsigned char) a;
unsigned char r2 = (unsigned char) a >> 8;
unsigned char r3 = (unsigned char) a >> 16;
unsigned char r4 = (unsigned char) a >> 24;

またはそのようなもの。

于 2012-04-04T00:04:24.913 に答える
1

あなたが使用することができますunsigned char n = (unsigned char)(rand() & 0x00ff);

于 2012-04-03T23:58:50.800 に答える
0

rand()また、出力の品質 (ランダム性) の点で、広く利用されている乱数ジェネレーターの中で最悪の 1 つであることを認識しておく必要があります。UNIX ベースのシステム、およびその他のいくつかのシステムではrandom()lrand48()[および友人] が大幅に優れています。速度のために、これらを使用する最良の方法は、上記の @Pida で説明されているとおりです。ここでは、1 単語分のランダム ビットに対して 1 回だけ呼び出します。ワード サイズは、使用する乱数発生器によって異なります。

于 2012-04-04T01:36:16.003 に答える