假設要生成的隨機數是大于等于20且小于等于100的整數
創新互聯建站長期為成百上千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為信陽企業提供專業的網站設計、網站建設,信陽網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制開發。
#includestdio.h
#includetime.h
#includestdlib.h
void?main()?{?int?a,b,x;
a=20;?b=100;
srand((unsigned?int)time(NULL));?//用當前時間生成一個隨機數種子
x=rand()%(b-a+1)+a;
printf("得到一個隨機數:%d\n",x);
}
C++的隨機函數
C++/c語言里,是沒有辦法得到一個真正的隨機數序列的.想要等到一個真正的隨機數序列,必須使用特定的隨機數硬件發生器.也就是說,軟件是沒有辦法產生真正的隨機數.因為軟件必須按照一定的邏輯來編寫.既然是按照特定的邏輯(也就是說算法)來編寫 ,那么產生的運算結果就是一定的.這一點,就是軟件天生的特性.想想看,如果一個軟件,同樣的代碼喝條件下,每次運行的結果不一樣,那還有誰會用?
所以,在C++/C語言中,就有了"偽隨機數"的概念.意思也就是說,通過一個特定的算法,產生一個假的隨機數序列.那么,程序員又希望這個隨機數序列跟接近真正的隨機數序列,也就是希望得到的序列的不一樣,所以有了一個"播種"的概念.
srand(unsgined int seed);
這個函數就是用來"播種"的.通過一個"種子"(SEED),來控制隨機數的序列不一樣.只要種子不一樣,那么通過rand()得到的隨機數序列就不一樣.反過來說,如果種子一樣,那么通過srand()得到的隨機數就是一樣的.
srand(0);
for( int i = 0; i 10; i++)
{
coutrand()' ';
}
你試著將這個程序執行兩次,你會發現兩次的結果一樣。那是因為,一旦“種子”確定了,那么這個隨機數序列就確定了。軟件天生的“行為可重復性”決定了這一點。
所以,一般在播種的時候,喜歡用一個隨機的種子.在絕大多數的情況下,會使用當前的系統時間.這個數字在每次程序運行的時候都不一樣.除非你手動的改系統時間.
編程時有時需要隨機輸入一些數,這是調用隨機函數可以完成此相命令.
# include “stdio.h”
# include “stdlib.h”
# include “time.h” /*需引用的頭文件*/
srand((unsigned)time(NULL)); /*隨機種子*/
n=rand()%(Y-X+1)+X; /*n為X~Y之間的隨機數*/
進一步解釋
有
srand()設置隨機數種子,rand()得到隨機數
random()的函數原型為int random(int num)
它的作用是Returns an integer between 0 and (num-1)
而randomize的函數原型為void randomize(void)
它的作用是Initializes the random number generator with a random value.
它們的區別是前者限定隨機數的產生范圍,而后者這完全是隨機的,另外使用這兩個函數時
應含入
#include stdlib.h
#include time.h
頭文件。
一個例子:
用法如下:
#include stdlib.h
#include stdio.h
#include time.h
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) ); //用系統時間當種子,對隨機函數進行初始化
for( i = 0; i 10;i++ )
{
k=rand()%100; //產生各個隨機數
printf( " k=%d\n", k );
}
}
再抄個~
在VC中設計到隨機數有兩個函數
srand() and rand()
srand() 的作用是是一個種子,提供每次獲得隨機數的基數而已,rand()根據種子而產生隨機數
注意
1:srand() 里的值必須是動態變化的,否則得到的隨機數就是一個固定數
2:其實可以不用寫srand() ,只用rand()就可以了,省事,簡單,例子如下
如果我們想得到一個 0-60的隨機數那么可以寫成
int i;
i=rand()%60;
就可以了。
當然最好有個統一的標注如下:
int i;
srand((unsigned)time( NULL ));
i=rand()%60;
這樣就OK了
例題隨機取數,取1到99之間
1、#include iostream.h
#include stdlib.h
#include time.h
int main()
{
int n;//n為隨機數
srand(time(NULL));
n=1+rand()%99;
coutn;
return 0;
}
2、#includeiostream.h
#includestdlib.h
#includetime.h
void main()
{
int a;
srand((unsigned) time(NULL));
a=rand()%99+1;
couta;
}
3、#include iostream.h
#include stdlib.h
#include time.h
void main()
{
int j;
srand((unsigned)time(NULL));
loop:
j=rand()%100;
if(j==0)
{
cout"error"endl;
goto loop;
}
else coutjendl;
}
4、如果象樓上的你的那種做法做下去
那應該是100%而不是98%
你一定是少了
srand(...........);
其實這個程序也不錯
#include iostream
#include cstdlib
using namespace std;
int main()
{
int counter;
for(counter=0;counter10;counter++)
{
srand(counter+1);
cout"Random number"counter+1":"rand()endl;
}
system("pause");
return 0;
}
5、#include iostream.h
#include stdlib.h
int main()
{
int shu =100;
int n;//n為隨機數
srand(shu);
n=rand() % shu;
coutn;
return 0;
}
不拿時間作隨機數,可以設一個種子數不清100這樣就產生0~99間的隨機數。
不過我沒有測試從復率,誰測了告訴我一下。
存入33個元素的數組。rand()%33隨機選一個元素,同最后一個元素交換。然后rand()%32隨機選一個元素,同倒數第二個元素交換。。。所有隨機數都放在數組尾部。輸出數組最后6個元素即可。
可以使用C語言標準庫中的srand()和rand()來生成隨機數,同時要生成1~99之間的隨機數,只需要將生成的隨機數與99整除,取其余數+1即可保證所有產生的隨機數在[1,99]的區間之內。示例代碼如下:
#includestdio.h
#includestdlib.h
#includetime.h
int?main()
{
int?a,i;
srand((unsigned)time(NULL));//初始化隨機數
for(i=0;i200;i++)
{
a=rand()%99+1;//隨機數的產生調用rand()函數
printf("%d\t",a);
}
printf("\n");
return?0;
}
分享文章:隨機函數c語言代碼 c語言中,產生隨機數的函數及其應用代碼舉例
分享鏈接:http://vcdvsql.cn/article26/ddipccg.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、網站建設、云服務器、微信公眾號、軟件開發、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯