srandは、疑似乱数のシード(乱数種)を変更する。
Man page of RAND
C言語関数辞典 - C言語Tips集 擬似乱数を発生させる
疑似乱数を作るのに使われるのが、シードと呼ばれる値で、これが毎回違うと、毎回違う乱数のパターンになる。
今回は、実行時にtimeの戻り値をsrandに渡すことで、毎回違うパターンの乱数ができるかを試してみる。
$ vi srand.c $ gcc -lm srand.c -o srand $ ./srand 4 5 30 58 93 67 49 8 57 10 46 26 83 97 84 16 20 70 77 12 32 27 22 46 0 75 54 4 49 95 98 5 0 28 63 94 47 12 54 57 75 1 83 58 98 19 27 70 90 4 35 74 32 57 73 32 32 27 88 33 23 38 39 75 67 2 69 66 67 24 23 42 25 59 52 75 78 79 46 20 36 81 47 68 38 20 52 22 99 92 55 22 30 94 50 49 49 19 16 16 $ ./srand 40 39 78 96 55 27 57 79 32 30 76 91 78 76 6 0 66 8 48 79 53 49 37 1 64 69 15 37 30 71 13 71 62 43 19 18 23 77 97 7 59 25 99 37 1 57 90 67 65 38 98 71 40 35 24 56 57 39 93 87 62 7 10 25 2 30 95 25 59 44 33 18 69 84 55 70 41 97 38 59 88 36 82 28 24 6 84 33 45 77 20 60 36 83 85 39 13 32 16 24 $ ./srand 38 43 25 82 73 33 19 93 1 88 41 88 68 61 66 22 87 70 60 69 21 87 80 9 87 91 21 90 15 19 81 5 14 58 40 87 92 11 33 93 51 74 33 72 87 51 94 74 21 54 43 94 94 75 4 81 67 77 24 34 49 57 91 15 15 31 55 59 43 88 4 46 14 89 18 2 40 13 76 13 67 72 60 61 47 16 95 66 45 71 0 46 28 92 62 43 75 17 55 70 $
最初、4で始まって、次に40から始まり、3つ目は38から始まりなので、毎回変わっていることがわかる。
Sample/c/srand/srand/src/srand at master · bg1bgst333/Sample · GitHub