在用计算机的一些智能算法(GA,PSO,ANN etc.)仿真时经常需要随机生成初始种群(初始样本),看看<stdlib.h>中的这两个函数的伪随机数生成吧~~~1. 生成[a,b]之间的一个实数和一个整数
- /*
- 定义函数 int rand(void);
- 函数说明 rand()会返回一随机数值,范围在0至RAND_MAX 间。
- 在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
- 关于随机数种子请参考srand()。
- 返回值 返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。
- 范例 :
- */
- #include <stdlib.h>
- #include <stdio.h>
- double doubleRand(double a,double b);
- int intRand(int a,int b);
- int main(void)
- {
- double i=doubleRand(2.0,9.0);
- int j=intRand(2,9);
- printf("%f
",i);
- printf("%d
",j );
- return 0;
- }
- double doubleRand(double a,double b)
- {
- double r;
- r=(double)rand()/RAND_MAX;
- return a+r*(b-a);
- }
- int intRand(int a,int b)
- {
- return (int)doubleRand(a,b);
- }
以上代码中的每个函数只能生成一个随机数,至于为什么呢?