自己用C語言寫隨機(jī)函數(shù) 自己用c語言寫隨機(jī)函數(shù)

C語言抽取隨機(jī)數(shù)怎么編寫

源程序代碼以及算法解釋如下:

成都創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元贛榆做網(wǎng)站,已為上家服務(wù),為贛榆各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

產(chǎn)生1-10隨機(jī)數(shù)程序:

#include iostream

#include time.h

using namespace std;

int main()

{

const int n = 10;//定義隨機(jī)數(shù)個(gè)數(shù)

int number[n] = { NULL };//定義隨機(jī)數(shù)存儲(chǔ)的數(shù)組

srand((unsigned)time(NULL));//初始化隨機(jī)函數(shù)

number[0] = rand() % n;//第一個(gè)隨機(jī)數(shù)無需比較

cout number[0] " ";

for (int i = 1; i n; i++)//其余隨機(jī)數(shù)循環(huán)產(chǎn)生

{

int j = 0;

number[i] = rand() % n;//產(chǎn)生隨機(jī)數(shù)

while (1)

{

if (number[i] == number[j])//若有相同則繼續(xù)循環(huán)重新安排隨機(jī)數(shù)

{

number[i] = rand() % n;//產(chǎn)生隨機(jī)數(shù)

j = 0;//若遇到相同的就從頭遍歷

continue;

}

if (j == (i - 1))//若遍歷完就跳出

break;

j++;

}

cout number[i] " ";

}

cout endl;

return 0;

}

程序運(yùn)行結(jié)果如下:

擴(kuò)展資料:

利用vector進(jìn)行隨機(jī)數(shù)輸出:

#include iostream

#include vector

#include time.h

using namespace std;

int main()

{

const int n = 10;

int randnum;

vectorint number;

for (int i = 0; i n; i++)

{

number.push_back(i + 1);????//從尾部添加元素

cout number[i] " ";

}

cout endl;

srand((unsigned)time(NULL));

for (int j = 0; j n; j++)?????//其余隨機(jī)數(shù)循環(huán)產(chǎn)生

{

randnum = rand() % (n - j);????//rand函數(shù)生成的隨機(jī)數(shù)是0-(n-1)

cout number.at(randnum) " ";

number.erase(number.begin() + randnum);

}

cout endl;

return 0;

}

C語言中怎樣寫一個(gè)生成隨機(jī)數(shù)的函數(shù)

rand函數(shù)也是調(diào)用dos的時(shí)鐘,進(jìn)行的偽隨機(jī)函數(shù).

你也可以使用時(shí)鐘來模擬隨機(jī)函數(shù).

可以試用gettime這個(gè)函數(shù):

long int MyRand(int x)

{

struct time t1,t2,t3;

gettime(t1);

int y1=t1.ti_hund;//取1/100s作為基數(shù)

gettime(t2);

int y2=t2.ti_hund;//取1/100s作為基數(shù)

gettime(t3);

int y3=t3.ti_hund;//取1/100s作為基數(shù)

return y1*y2*y3;//產(chǎn)生的隨機(jī)數(shù)0~99*99*99

}

C語言隨機(jī)函數(shù)怎么弄

C++的隨機(jī)函數(shù)

C++/c語言里,是沒有辦法得到一個(gè)真正的隨機(jī)數(shù)序列的.想要等到一個(gè)真正的隨機(jī)數(shù)序列,必須使用特定的隨機(jī)數(shù)硬件發(fā)生器.也就是說,軟件是沒有辦法產(chǎn)生真正的隨機(jī)數(shù).因?yàn)檐浖仨毎凑找欢ǖ倪壿媮砭帉?既然是按照特定的邏輯(也就是說算法)來編寫 ,那么產(chǎn)生的運(yùn)算結(jié)果就是一定的.這一點(diǎn),就是軟件天生的特性.想想看,如果一個(gè)軟件,同樣的代碼喝條件下,每次運(yùn)行的結(jié)果不一樣,那還有誰會(huì)用?

所以,在C++/C語言中,就有了"偽隨機(jī)數(shù)"的概念.意思也就是說,通過一個(gè)特定的算法,產(chǎn)生一個(gè)假的隨機(jī)數(shù)序列.那么,程序員又希望這個(gè)隨機(jī)數(shù)序列跟接近真正的隨機(jī)數(shù)序列,也就是希望得到的序列的不一樣,所以有了一個(gè)"播種"的概念.

srand(unsgined int seed);

這個(gè)函數(shù)就是用來"播種"的.通過一個(gè)"種子"(SEED),來控制隨機(jī)數(shù)的序列不一樣.只要種子不一樣,那么通過rand()得到的隨機(jī)數(shù)序列就不一樣.反過來說,如果種子一樣,那么通過srand()得到的隨機(jī)數(shù)就是一樣的.

srand(0);

for( int i = 0; i 10; i++)

{

coutrand()' ';

}

你試著將這個(gè)程序執(zhí)行兩次,你會(huì)發(fā)現(xiàn)兩次的結(jié)果一樣。那是因?yàn)?,一旦“種子”確定了,那么這個(gè)隨機(jī)數(shù)序列就確定了。軟件天生的“行為可重復(fù)性”決定了這一點(diǎn)。

所以,一般在播種的時(shí)候,喜歡用一個(gè)隨機(jī)的種子.在絕大多數(shù)的情況下,會(huì)使用當(dāng)前的系統(tǒng)時(shí)間.這個(gè)數(shù)字在每次程序運(yùn)行的時(shí)候都不一樣.除非你手動(dòng)的改系統(tǒng)時(shí)間.

編程時(shí)有時(shí)需要隨機(jī)輸入一些數(shù),這是調(diào)用隨機(jī)函數(shù)可以完成此相命令.

# include “stdio.h”

# include “stdlib.h”

# include “time.h” /*需引用的頭文件*/

srand((unsigned)time(NULL)); /*隨機(jī)種子*/

n=rand()%(Y-X+1)+X; /*n為X~Y之間的隨機(jī)數(shù)*/

進(jìn)一步解釋

srand()設(shè)置隨機(jī)數(shù)種子,rand()得到隨機(jī)數(shù)

random()的函數(shù)原型為int random(int num)

它的作用是Returns an integer between 0 and (num-1)

而randomize的函數(shù)原型為void randomize(void)

它的作用是Initializes the random number generator with a random value.

它們的區(qū)別是前者限定隨機(jī)數(shù)的產(chǎn)生范圍,而后者這完全是隨機(jī)的,另外使用這兩個(gè)函數(shù)時(shí)

應(yīng)含入

#include stdlib.h

#include time.h

頭文件。

一個(gè)例子:

用法如下:

#include stdlib.h

#include stdio.h

#include time.h

void main( void )

{

int i,k;

srand( (unsigned)time( NULL ) ); //用系統(tǒng)時(shí)間當(dāng)種子,對(duì)隨機(jī)函數(shù)進(jìn)行初始化

for( i = 0; i 10;i++ )

{

k=rand()%100; //產(chǎn)生各個(gè)隨機(jī)數(shù)

printf( " k=%d\n", k );

}

}

再抄個(gè)~

在VC中設(shè)計(jì)到隨機(jī)數(shù)有兩個(gè)函數(shù)

srand() and rand()

srand() 的作用是是一個(gè)種子,提供每次獲得隨機(jī)數(shù)的基數(shù)而已,rand()根據(jù)種子而產(chǎn)生隨機(jī)數(shù)

注意

1:srand() 里的值必須是動(dòng)態(tài)變化的,否則得到的隨機(jī)數(shù)就是一個(gè)固定數(shù)

2:其實(shí)可以不用寫srand() ,只用rand()就可以了,省事,簡單,例子如下

如果我們想得到一個(gè) 0-60的隨機(jī)數(shù)那么可以寫成

int i;

i=rand()%60;

就可以了。

當(dāng)然最好有個(gè)統(tǒng)一的標(biāo)注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

這樣就OK了

例題隨機(jī)取數(shù),取1到99之間

1、#include iostream.h

#include stdlib.h

#include time.h

int main()

{

int n;//n為隨機(jī)數(shù)

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、如果象樓上的你的那種做法做下去

那應(yīng)該是100%而不是98%

你一定是少了

srand(...........);

其實(shí)這個(gè)程序也不錯(cuò)

#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為隨機(jī)數(shù)

srand(shu);

n=rand() % shu;

coutn;

return 0;

}

不拿時(shí)間作隨機(jī)數(shù),可以設(shè)一個(gè)種子數(shù)不清100這樣就產(chǎn)生0~99間的隨機(jī)數(shù)。

不過我沒有測試從復(fù)率,誰測了告訴我一下。

隨機(jī)函數(shù)rand怎么用c語言

一、首先包含必要的頭文件

#includestdio.h

這個(gè)包含用于輸入輸出的函數(shù)。

#includestdlib.h

這個(gè)包含初始化隨機(jī)數(shù)種子、產(chǎn)生隨機(jī)數(shù)的函數(shù)。

#includetime.h

這個(gè)包含與時(shí)間有關(guān)的函數(shù),初始化隨機(jī)數(shù)種子時(shí)可以用到。

二、使用如下公式產(chǎn)生在區(qū)間[min,max]之間的隨機(jī)數(shù)

int r=rand()%(max-min+1)+min;

三、一個(gè)例子,產(chǎn)生10個(gè)[1,100]的隨機(jī)整數(shù)

#include stdio.h

#include stdlib.h

#include time.h

int main()

{

const int min=1,max=100;

int i,r;

//用當(dāng)前時(shí)間初始化隨機(jī)數(shù)種子

srand(time(NULL));

printf("隨機(jī)產(chǎn)生的10個(gè)1-100的整數(shù)是:");

for(i=0;i10;i++)

{

r=rand()%(max-min+1)+min;

printf("%d,",r);

}

return 0;

}

四、運(yùn)行結(jié)果的截圖

截圖1

截圖2

用C語言編寫一個(gè)可以產(chǎn)生1~99隨機(jī)數(shù)的函數(shù)

可以使用C語言標(biāo)準(zhǔn)庫中的srand()和rand()來生成隨機(jī)數(shù),同時(shí)要生成1~99之間的隨機(jī)數(shù),只需要將生成的隨機(jī)數(shù)與99整除,取其余數(shù)+1即可保證所有產(chǎn)生的隨機(jī)數(shù)在[1,99]的區(qū)間之內(nèi)。示例代碼如下:

#includestdio.h

#includestdlib.h

#includetime.h

int?main()

{

int?a,i;

srand((unsigned)time(NULL));//初始化隨機(jī)數(shù)

for(i=0;i200;i++)

{

a=rand()%99+1;//隨機(jī)數(shù)的產(chǎn)生調(diào)用rand()函數(shù)

printf("%d\t",a);

}

printf("\n");

return?0;

}

網(wǎng)頁名稱:自己用C語言寫隨機(jī)函數(shù) 自己用c語言寫隨機(jī)函數(shù)
地址分享:http://muchs.cn/article32/hgigpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、電子商務(wù)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)