srand

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