srand(1)
C(++)のPRNGを(参照srand
で定義されているように)への呼び出し前の状態にリセットする難しい方法を見つけました。ただし、シード 0 は同じように見えるか、呼び出し前の状態がシード 0 を使用しているように見えます。これら 2 つの呼び出しの違いは何ですか、またはそれらが同じことを行う理由は何ですか?srand
たとえば、このコード ( Ideone で実行)
#include <stdio.h>
#include <stdlib.h>
int main() {
for (int seed = 0; seed < 4; seed++ ) {
printf( "Seed %d:", seed);
srand( seed );
for(int i = 0; i < 5; i++ )
printf( " %10d", rand() );
printf( "\n");
}
return 0;
}
戻り値
Seed 0: 1804289383 846930886 1681692777 1714636915 1957747793
Seed 1: 1804289383 846930886 1681692777 1714636915 1957747793
Seed 2: 1505335290 1738766719 190686788 260874575 747983061
Seed 3: 1205554746 483147985 844158168 953350440 612121425