質問: 0; i < 10; ++i) { printf("%d ", rand()); } printf("\n"); } int main() { showRand(); showRand(); showRand(); system("pause"); } ``` 実行結果 > > 38 7719 21238 2437 8855 11797 8365 32285 10450 30612 > > 38 7719 21238 2437 8855 11797 8365 32285 10450 30612 > > 38 7719 21238 2437 8855 11797 8365 32285 10450 30612 > > 続行するには何かキーを押してください . . . > > >
回答: こんにちは。 n1570(C言語の規格書に近いもの)によると下記のように記載されてます。 > > If srand is then called with the same seed value, the sequence of pseudo-random numbers shall be repeated. > > > 同じシードを与えたら、同じ擬似乱数のシーケンスを繰り返すとは記載されてますが、それだけです。 リビルドした時さえ特に言及されてないので、リビルド前とリビルド後で同じシードに対して異なるシーケンスを返却しても規格には合致していると解釈した方が良いと思います。 実際には、リビルドだけなら同じシーケンスが返却すれるとは思いますが、異なるコンパイラ間で保証されるとはとても思えませんし、バージョンアップで変更されても文句は言えないように思います。 そのような使い方であれば、ご自身で乱数を実装すれば簡単な暗号化には使えるように思います。