私は、いくつかの最も基本的な c 関数にしかアクセスできないコーディング環境にいます。他のライブラリを #include することはできません。
この環境では、rand() を呼び出すことができます。これにより、私の環境では 0 から 32767 までの乱数が包括的に (私が思うに) 返されます。次のコードは、rand() のように/として均等に分散されたより大きな乱数を取得する正しいロジックですか?
rnum = rand() * (32767 + 1) + rand();
static unsigned long next = 1;
int my_rand(void) {
next = next * 1103515245 + 12345;
return((unsigned)(next/65536) % (RAND_MAX+1));
}
void my_srand(unsigned int seed) {
next = seed;
}
Linux で
#define RAND_MAX 2147483647
あなたの環境 RAND_MAX はおそらく 32767 です
参照: http://en.wikipedia.org/wiki/Linear_congruential_generator
メモリに制約がない場合は、http://en.wikipedia.org/wiki/Mersenne_twisterも参照できます。コードは上記の例のように埋め込み可能です。