歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言區間隨機數生成 with srand() & rand() & time()

C語言區間隨機數生成 with srand() & rand() & time()

日期:2017/3/1 10:07:44   编辑:Linux編程

在用計算機的一些智能算法(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. }

以上代碼中的每個函數只能生成一個隨機數,至於為什麼呢?

Copyright © Linux教程網 All Rights Reserved