10/11/06 23:03:00
いろいろひどいからエスパーしていい?
要件:
1.genrand_int31()の剰余をとる
2.分布を完全に均等化するために剰余をとる前の値がNの倍数通りになるように再実行する
んで、
#define INT31_MAX 0x7FFFFFFF // ←ここ重要
int value;
do { value = genrand_int31();
} while (value >= INT31_MAX - (INT31_MAX % n));
value %= n;
MTは下位ビットをとっても安全な疑似乱数だからどっちでもいい