0 から 59 までの乱数を生成しようとしていますが、C の rand() 関数に満足していません。
#include <stdlib.h>
#include <time.h>
main()
{
int num;
srand(time(NULL));
num = rand();
num = num % 59;
printf("%d\n", num);
}
このコードで実行を繰り返したところ、生成される乱数が実際にはそれほどランダムに見えないことに気付きました。プログラムを実行するたびに、最初に戻るまで数値が徐々に大きくなるため、生成された数値は間違いなくパターンに従っています (つまり、2、17、21、29、38、47、54、59、4、 11....など)。
関数を再実行するたびに生成される確率が 1/60 の真の乱数を取得できるように、関数をシードする方法はありますか? または、C で rand() 関数を使用する代わりに、自分で実装できる代替方法はありますか?