srand((int)time(NULL))用于設定隨機數種子。?rand()%100,產生0-99的隨機數。如果要產生16-59之間的數,可以這樣寫:rand()%44+16(這里44由59-16+1得到)。其他情況與此雷同。
做網站、成都網站制作的開發,更需要了解用戶,從用戶角度來建設網站,獲得較好的用戶體驗。創新互聯多年互聯網經驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網絡公司,打造的就是網站建設產品直銷的概念。選擇創新互聯,不只是建站,我們把建站作為產品,不斷的更新、完善,讓每位來訪用戶感受到浩方產品的價值服務。
rand()是不能產生真正的隨機數的。即使不能產生真正的隨機數,也要大概接近。而rand()好象每次的隨機都一樣。之所以rand()每次的隨機數都一樣是因為rand()函數使用不正確。
各種編程語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。
擴展資料
調用隨機數函數 rand()() 的時候, 實際得到的這個隨機數并不是絕對隨機的,它是以一個初始值,通過一個算法,計算出來的“偽隨機數"數列,每次調用rand()()時,從這個數列依次取出一個值,做為隨機數。
這個初始的值就是"隨機數種子", 也就是說,如果隨機數種子相同,計算出的隨機數數列是相同的。而srand()om( x) 這個函數就是初始化隨機數產生器,設定隨機數種子用的。給定的x的就是隨機數種子??梢则炞C,當你多次調用srandm(x)時,如果x取值相同,則得到的隨機數數列是一樣的。
所以,若我們每次運行程序時,要得到不同的隨機數序列,就應該用不同的種子來初始化這個隨機數產生器。比如說,用時間初始化它,或者用getpid(),用進程的pid號初始化,由于每次運行程序時,它的pid號一般是不同的,所以能夠產生不同的隨機數序列。
s_addr是一個long型的變量,當然可以用random的返回值進行賦值。結構體如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////這里
} S_un;
} in_addr;
IP地址本來就是一個32位整數,只不過為了方便記憶和查看,將8位作為一組,每組用10進制數字表示,并且用'.'隔開。比如:0.0.0.3,對應的32位二進制數為:0000000000.....111(前面有29個0),s_addr就是記錄這個二進制數的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
這個是用4個10進制數表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系統負責將它轉換為32位二進制數。
struct {u_short s_w1,s_w2;} S_un_w;
這個是指前16位作為一部分,后面16位作為一個部分。".0.0.0.3"前面16位作為一個部分值為0,后面的部分值為3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;
rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當于產生了隨機數,但這不是真正的隨機數,當計算機正常開機后,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了 srand()函數,它的原形是void srand( int a).
初始化隨機產生器既rand()函數的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數,我們是可以產生可以預見的隨機序列,那我們如何才能產生不可預見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的.
下面講一講在C語言里所提供的隨機數發生器的用法?,F在的C編譯器都提供了一個基于ANSI標準的偽隨機數發生器函數,用來生成隨機數。它們就是rand()和srand()函數。這二個函數的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;
2) 然后調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)
3) 根據需要多次調用rand(),從而不間斷地得到新的隨機數;
4) 無論什么時候,都可以給srand()提供一個新的種子,從而進一步“隨機化”rand()的輸出結果。
以下是一個產生隨機數的例子:
需要首先使用隨機數“種子”初始化,srand函數:
#i?nclude?stdlib.h
#i?nclude?stdio.h
#i?nclude?time.h//使用當前時鐘做種子
void?main(?void?)
{
int?i;
srand(?(unsigned)time(?NULL?)?);//初始化隨機數
/*?打印10個隨機數.?*/
for(?i?=?0;?i??10;i++?)
printf(?"?%d\n",?rand()?);
}
#include?stdlib.h
#include?time.h
main
{
int?i;
srand(time(0));?//初始化隨機種子
i?=?rand();?//產生隨機數
}
首先,加一個"#includestdlib.h
然后設一個變量,如j,j=rand(),就可以給j賦一個1~32767的隨機數,如果要獲得一個隨機函數的十位(其它類似),只需令j=j%10就行.
添加頭文件 #includetime.h
然后在文件中添加 srand((unsigned)time(NULL));
srand()是用來初始化隨機種子數的,因為rand的內部實現是用線性同余法做的,它不是真的隨機數,只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的.
上面是有個隨機種子的說明及方法,為了避免重復.然后再 用 隨機函數,rand() 就行了.
頭文件是 stdlib.h
random() 產生隨機數為 0或1
random(n) 產生隨機數為 0到n之間的一個隨機數
rand() 產生 0到32768之間的一個隨機數
函數名: randomize
功 ?能: 初始化隨機數發生器
用 ?法: void randomize(void);
程序例:
#include?stdlib.h
#include?stdio.h
#include?time.h
int?main(void)
{
int?i;
randomize();
printf("Ten?random?numbers?from?0?to?99\n\n");
for(i=0;?i10;?i++)
printf("%d\n",?rand()?%?100);
return?0;
}
1.
rand函數是根據一個數(我們可以稱它為種子)為基準,以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當于產生了隨機數,
2.
但這產生的并不是真意正義上的隨機數,是一個偽隨機數,當計算機正常開機后,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值。
3.
種子相同,產生的隨機序列相同。這樣做的好處是,方便我們產生一組固定的隨機序列,用來調試程序。
4.
C提供了srand()函數,用來設置種子,它的原形是void
srand(
int
a)。
5.
在調用rand函數產生隨機數前,應該先利用srand()設好隨機數種子,如果未設隨機數種子,默認種子為1。
C語言里面沒有random函數
只有rand
功能是產生一個整型隨機數。
比如
n=rand();
這樣就可以了
為了真隨機,一般在開始設置一個種子 一次即可。 常用方式為
srand(time(NULL));
random,C語言里意為隨機數發生器。用法:
int random(int num);
例子:
#include stdlib.h
int main(void);
{
randomize();
printf("number:%d\n",random(100));/*意為取0~99之間的數字并輸出*/
return 0;
}
當前題目:c語言中random函數,c語言中random函數如何隨機32
文章位置:http://vcdvsql.cn/article36/hedisg.html
成都網站建設公司_創新互聯,為您提供自適應網站、品牌網站制作、虛擬主機、網站設計公司、微信公眾號、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯