作者:LAMP小白 点击:2133 发布日期:2012-10-21 20:14:00 返回列表
学习中碰到的两个问题
%d与%i
完全一样
关于RAND_MAX
他是一个常量,等于当前计算机最大的符号整型,如果32位的计算机,那么RAND_MAX为32个二进制1为2147483647
还有一点是,有一些文章说RAND_MAX是包含在stdio.h中的,这是错误的,实际RAND_MAX是包含在stdlib.h中的!
rand()是stdlib中一个函数,用于生成一个介于0~RAND_MAX之间的整数,但是通过下面代码发现随机出来的数都是一样的
#include mio_lt;stdio.hmio_gt; #include mio_lt;stdlib.hmio_gt; int main() { int i = 0; for(i; imio_lt; 10; i++) printf("Random numbers are: %in",rand()); return 0; }
[root@localhost 20121021]# ./part1
Random numbers are: 1804289383
Random numbers are: 846930886
Random numbers are: 1681692777
Random numbers are: 1714636915
Random numbers are: 1957747793
Random numbers are: 424238335
Random numbers are: 719885386
Random numbers are: 1649760492
Random numbers are: 596516649
Random numbers are: 1189641421
[root@localhost 20121021]# ./part1
Random numbers are: 1804289383
Random numbers are: 846930886
Random numbers are: 1681692777
Random numbers are: 1714636915
Random numbers are: 1957747793
Random numbers are: 424238335
Random numbers are: 719885386
Random numbers are: 1649760492
Random numbers are: 596516649
Random numbers are: 1189641421
这是因为我们使用的随机数种子是一样的,这个种子在计算机正常启动的时候就设置好了
所以srand()可以为我们设置随机种子,如果我们把随机种子设置为1,你会发现结果还是一样的
这就说明随机种子其实是1(linux centOS 5.5)
没有使用srand的结果
[root@localhost 20121021]# ./part1
Random numbers are: 1804289383
Random numbers are: 846930886
Random numbers are: 1681692777
Random numbers are: 1714636915
Random numbers are: 1957747793
Random numbers are: 424238335
Random numbers are: 719885386
Random numbers are: 1649760492
Random numbers are: 596516649
Random numbers are: 1189641421
加入srand()后的代码:
#include mio_lt;stdio.hmio_gt;
#include mio_lt;stdlib.hmio_gt;
int main()
{
int num = 1;
int i = 0;
srand(num);
for(i; imio_lt; 10; i++)
printf("Random numbers are: %in",rand());
return 0;
}
设置种子为1结果与未设置种子时一样
[root@localhost 20121021]# gcc -o part1 part1.c
[root@localhost 20121021]# ./part1
Random numbers are: 1804289383
Random numbers are: 846930886
Random numbers are: 1681692777
Random numbers are: 1714636915
Random numbers are: 1957747793
Random numbers are: 424238335
Random numbers are: 719885386
Random numbers are: 1649760492
Random numbers are: 596516649
Random numbers are: 1189641421
当我们把种子设置为3的时候
int num = 3;
结果就产生变化了
Random numbers are: 1205554746
Random numbers are: 483147985
Random numbers are: 844158168
Random numbers are: 953350440
Random numbers are: 612121425
Random numbers are: 310914940
Random numbers are: 1210224072
Random numbers are: 1856883376
Random numbers are: 1922860801
Random numbers are: 495649264
我们把srand()配合time()或更多乱序条件产生不同的随机种子,那么就可以得到变化的伪随机数了
上一篇:MYSQL多表查询 下一篇:快递查询API