c語言的rand
⑴ c語言中的rand()函數怎麼用
rand()
rand()函數用來產生隨機數,但是,rand()的內部實現是用線性同餘法實現的,是偽隨機數,由於周期較長,因此在一定范圍內可以看成是隨機的。
rand()會返回一個范圍在0到RAND_MAX(至少是32767)之間的偽隨機數(整數)。
在調用rand()函數之前,可以使用srand()函數設置隨機數種子,如果沒有設置隨機數種子,rand()函數在調用時,自動設計隨機數種子為1。隨機種子相同,每次產生的隨機數也會相同。
rand()函數需要的頭文件是:<stdlib.h>
rand()函數原型:int rand(void);
使用rand()函數產生1-100以內的隨機整數:int number1 = rand() % 100+1。
srand()
srand()函數需要的頭文件仍然是:<stdlib.h>
srand()函數原型:void srand (usigned int seed);
srand()用來設置rand()產生隨機數時的隨機數種子。參數seed是整數,通常可以利用time(0)或getpid(0)的返回值作為seed。
使用rand()和srand()產生1-100以內的隨機整數:
srand(time(0));
int number1 = rand() % 100+1。
⑵ c語言中rand()函數怎麼用
C語言中rand函數的使用方法如下:
一、基本使用
rand函數是C語言中的一個標准庫函數,用於生成隨機整數。其基本語法為:
c
#include // 包含stdlib庫,該庫包含rand函數
int rand; // 不需要傳遞參數
調用rand函數即可返回一個隨機整數。
二、生成特定范圍的隨機數
為了生成特定范圍的隨機數,可以使用rand函數結合算術運算來實現。例如,要生成一個介於1到10之間的隨機整數,可以使用以下代碼:
c
int random_number = rand % 10 + 1; // 生成1到10之間的隨機整數
這里使用模運算符來獲取rand函數生成的隨機數與10的余數,然後將結果加1,以確保生成的隨機數在指定范圍內。
三、使用srand函數設置隨機數種子
為了保證每次程序運行時生成的隨機數序列不同,可以使用srand函數來設置隨機數生成器的種子。種子可以是任意整數,通常使用當前時間作為種子。使用srand函數可以確保每次運行程序時生成的隨機數序列都是不同的。示例如下:
c
#include // 包含stdlib庫,該庫包含rand和srand函數
#include // 包含time庫,用於獲取當前時間作為種子
int main {
srandtime); // 設置隨機數種子為當前時間
int random_number = rand; // 生成隨機整數
// 其他代碼...
return 0;
}
四、注意事項
使用rand函數時需要注意以下幾點:
1. rand函數生成的隨機數序列並不是真正的隨機數,而是偽隨機數。在需要更高質量的隨機數時,可能需要使用更復雜的隨機數生成庫。
2. 為了確保每次運行程序時生成的隨機數序列不同,應該在使用rand函數之前調用srand函數設置種子。通常使用當前時間作為種子是一個不錯的選擇。
⑶ c語言rand
rand()%90+10:隨機產生一個兩位數[10,100).
rand()是產生隨機數的函數(rand為random的縮寫),它產生一個[0,32767)之間一個隨機數.
rand()常與srand()一起使用.
srand()是seed_random的縮寫,seed意思是隨機數種子.如果程序中未使用srand()函數.C系統默認為srand(0).如果有以下語句:
for(i=0;i<5;i++)
for(j=0;j<4;j++)
a[i][j]=rand()%90+10;
則從a[0][0]到a[5][4]的值都相同.
因此要在for(i=0;i<5;i++)之前加上如下語句:
srand ( (unsigned) time (NULL) );
srand()的形參要求是unsigned型,而time()的返回值是長整型,故需強制轉換.而time(NULL)返回從1970年0時0分0秒到srand()語句執行時系統時鍾所經歷的秒數(這個數字很大達千萬,故為長整型).
如果你需要20個60到100的隨機數.則可用如下語句實現:
#inlude <stdio.h>
main()
{int a[20},i;
srand ( (unsigned) time (NULL) );
for(i=0;i<20;i++)
{a[i]=rand()%40+60;/*100-60=40*/
printf("%4d",a[i]);
}
}
其實從概律論來分析,用這兩個函數產生的隨機數並不隨機,它們並不符合正態分數.