C语言区间随机数生成 with srand() & rand() & time()

electricperi 2012-11-05

在用计算机的一些智能算法(GA,PSO,ANN etc.)仿真时经常需要随机生成初始种群(初始样本),看看<stdlib.h>中的这两个函数的伪随机数生成吧~~~

1. 生成[a,b]之间的一个实数和一个整数

  1. /*
  2. 定义函数 int rand(void);
  3. 函数说明 rand()会返回一随机数值,范围在0至RAND_MAX 间。
  4. 在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。
  5. 关于随机数种子请参考srand()。
  6. 返回值 返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,其值为2147483647。
  7. 范例 :
  8. */
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11. double doubleRand(double a,double b);
  12. int intRand(int a,int b);
  13. int main(void)
  14. {
  15. double i=doubleRand(2.0,9.0);
  16. int j=intRand(2,9);
  17. printf("%f \n",i);
  18. printf("%d \n",j );
  19. return 0;
  20. }
  21. double doubleRand(double a,double b)
  22. {
  23. double r;
  24. r=(double)rand()/RAND_MAX;
  25. return a+r*(b-a);
  26. }
  27. int intRand(int a,int b)
  28. {
  29. return (int)doubleRand(a,b);
  30. }

以上代码中的每个函数只能生成一个随机数,至于为什么呢?

相关推荐