在用計算機的一些智能算法(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 \n",i);
- printf("%d \n",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);
- }
以上代碼中的每個函數只能生成一個隨機數,至於為什麼呢?