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