- 论坛徽章:
- 0
|
Linux下:
The srand() function sets its argument as the seed for a new sequence
of pseudo-random integers to be returned by rand(). These sequences
are repeatable by calling srand() with the same seed value.
按照我的理解和简单的测试,rand函数是根据一组固定的序列产生一组固定的随机数的,而srand函数
把它的参数作为种子,产生新的序列,进而使rand函数产生新的随机数。
测试程序如下:
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <unistd.h>
- int main()
- {
- int i;
- printf("Call rand directly:\n");
- for (i = 0; i < 5; i++) {
- int random;
- random = rand();
- printf("%d: random = %d\n", i, random);
- sleep(1);
- }
- printf("Call rand after srand:\n");
- for (i = 0; i < 5; i++) {
- int random;
- int t;
- t = time(0);
- srand(t);
- random = rand();
- printf("%d: random = %d\n", i, random);
- sleep(1);
- }
- return 0;
- }
复制代码
结果1:
Call rand directly:
0: random = 1804289383
1: random = 846930886
2: random = 1681692777
3: random = 1714636915
4: random = 1957747793
Call rand after srand:
0: random = 143921304
1: random = 1984486879
2: random = 609627936
3: random = 1378372725
4: random = 1074392086
结果2
0: random = 1804289383
1: random = 846930886
2: random = 1681692777
3: random = 1714636915
4: random = 1957747793
Call rand after srand:
0: random = 11011602
1: random = 1850078645
2: random = 492284887
3: random = 177454653
4: random = 2024262358 |
|