這麼說來,隨機種子的內容,不是由C語言本身決定,而是由編譯器來決定的?
C語言标准没有规定int的大小,int的大小是由编译器的作者决定的
即使視同一個數值的隨機種子(比如srand(1))
也有可能因為編譯器的不同,而呈現不一樣的算法嗎?
这我就不知道了,我没有研究过这部分的内容
就算是随机算法一样,隨機種子的范围不一样,我想给出的结果应该也是不一样的
- $ cat main.c
- #include <stdio.h>
- #include <stdlib.h>
- int main(void) {
- srand(1);
- for(size_t i = 0; i < 10; ++i) {
- printf("%d\n", rand());
- }
- return 0;
- }
- $ gcc -g -Wall -o main main.c
- $ ./main
- 1804289383
- 846930886
- 1681692777
- 1714636915
- 1957747793
- 424238335
- 719885386
- 1649760492
- 596516649
- 1189641421
- $ ./main
- 1804289383
- 846930886
- 1681692777
- 1714636915
- 1957747793
- 424238335
- 719885386
- 1649760492
- 596516649
- 1189641421
- $ ./main
- 1804289383
- 846930886
- 1681692777
- 1714636915
- 1957747793
- 424238335
- 719885386
- 1649760492
- 596516649
- 1189641421
- $ clang -g -Wall -o main main.c
- $ ./main
- 1804289383
- 846930886
- 1681692777
- 1714636915
- 1957747793
- 424238335
- 719885386
- 1649760492
- 596516649
- 1189641421
- $ ./main
- 1804289383
- 846930886
- 1681692777
- 1714636915
- 1957747793
- 424238335
- 719885386
- 1649760492
- 596516649
- 1189641421
- $ ./main
- 1804289383
- 846930886
- 1681692777
- 1714636915
- 1957747793
- 424238335
- 719885386
- 1649760492
- 596516649
- 1189641421
- $
复制代码