c語言產生隨機數的函式
阿新 • • 發佈:2018-11-12
1.產生隨機數
(1)使用該函式首先應在開頭包含
標頭檔案stdlib.h
TC編譯器中int是16位的,unsigned int 也是16位的,既可以表示0——65535範圍內的數;
VC中int的是32位的,unsigned int 也是32位,0——2^32 -1
所以 unsigned int rand()產生的隨機數範圍還是看編譯器的環境而定。 一個小例子:
要讓隨機數限定在一個範圍,可以採用模除加加法的方式。
要產生隨機數r, 其範圍為 m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對於任意數,
0<=rand()%(n-m+1)<=n-m
於是
0+m<=rand()%(n-m+1)+m<=n-m+m
即
m<=rand()%(n-m+1)+m<=n
3.產生可變化的隨機數
srand()來設定種子
(2)在標準的C庫中函式rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。
(3)rand()函式沒有輸入引數,直接通過表示式rand()來引用;
(4)標準C並沒有規定int整數的位數,int的位數由編譯器定義,例如:TC編譯器中int是16位的,unsigned int 也是16位的,既可以表示0——65535範圍內的數;
VC中int的是32位的,unsigned int 也是32位,0——2^32 -1
所以 unsigned int rand()產生的隨機數範圍還是看編譯器的環境而定。 一個小例子:
#include<stdio.h>
#include<stdlib.h>
int main()
{int n=0;
n=rand();
printf("n=%d\n",n);
system("pause");
return 0;
}
2.產生一定範圍的隨機數3.產生可變化的隨機數
rand()來產生隨機數
兩個區別看我的部落格 點選開啟連結 來個例子:#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//初始化二維陣列
void init_pane()
{
int i = 0, j = 0;
for (i = 0; i<4; i++)
{
for (j = 0; j<4; j++)
{
pane[i][j] = 0;
}
}
srand(time(NULL));
i = rand() % 4;
j = rand() % 4;
if (i == 0 || i == 2)
{
pane[i][j] = 2;
}
else
{
pane[i][j] = 4;
}
}