bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C語言設計函數隨機 C語言中隨機函數

c語言隨機數函數是什么?

C語言隨機函數主要用于實現一組隨機數的生成。

為融水等地區用戶提供了全套網頁設計制作服務,及融水網站建設行業解決方案。主營業務為網站設計制作、做網站、融水網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

代碼示例如下:

#includestdio.h

#includestdlib.h

int main ()

{

int a;

a=rand()%4;

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

return 0;

}

C預先生成一組隨機數,每次調用隨機函數時從指針所指向的位置開始取值,因此使用rand()重復運行程序產生的隨機數都是相同的,可以通過srand()函數來改變指針位置。

擴展資料:

C語言隨機函數指針位置

void srand( unsigned int seed )

改變隨機數表的指針位置(用seed變量控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產生的seed值都不同。

基于毫秒級隨機數產生方法:

#includewindows.h

種子設為:srand(unsigned int seed);

srand(GetTickCount());

參考資料:百度百科-C語言隨機函數

C語言:怎么設置一個隨機的函數(隨機范圍是 0-100)

#include

stdlib.h

#include

stdio.h

#include

time.h

void

main()

{

int

i,count[100];

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

{count[i]=random(100);//設定

取值范圍

,這表明

隨機數

是0-100之間取

printf("%d\n",count[i]);

}

}

關于C語言隨機函數

把 srand( time(0) ); 放在循環外每次產生隨機數的種子也是一樣的啊,為什么產生的隨機數就不一樣了?

因為隨機函數只需要一個種子就能產生一系列的隨機數,并不是每個隨機數都需要一個種子。

你把 srand(time(0)) 放到循環前面就可以了。

原因: time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,而那個循環運行起來耗時連0.000001秒都不到! 也就是說,srand(time(0)) 連著4次的種子是一樣的,種子一樣,生產的隨機數當然是一樣了。

如果你在把srand()放循環里面,在中間加個sleep函數,消耗一點時間(間隔大于1秒),那么生成的rand 就不一樣了.但是這樣做很不好,連著兩次用srand生成的種子,間隔一樣,生產的隨機數間隔有會有規律性。

另:因為兩次運行同一程序的時間肯定是不一樣的,所以把srand放在循環前面可以得不同的種子,這樣才能得到你想要的。

C語言的,隨機函數

要用srand()函數設置一個隨機數種子

例1:

#include stdlib.h

#include iostream

#include time.h

using namespace std;

int main()

{

srand( (unsigned)time( NULL ) ); // 隨機數種子產生

int i=rand()%100-1; // 產生100以內的隨機數并賦給i

coutiendl;

getchar();

return 0;

}

例2:

#include stdio.h

#include stdlib.h

main()

{

int seed=1000; // 種子

int i;

int m[16] ;

int nn=0;

double r;

printf("enter seed please\n");

scanf("%d",seed);

srand(seed); // 初始化隨機數生成器

for (i=0;i=15;i++) m[i] = 0;

while (nn 10 ){

// r 是雙精度浮點隨機數,范圍0.0到1.0

r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );

i =(int) ( r * 15.0);

if (m[i] == 0) {

m[i] = 1; nn = nn + 1;

printf("%d ",i);

};

}

}

C語言隨機函數怎么弄

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間的隨機數。

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

C語言編程中生成隨機數的初級教程

幾個概念

隨機數:數學上產生的都是偽隨機數,真正的隨機數使用物理方法產生的。

隨機數種子:隨機數的產生是由算術規則產生的,srand(seed)的隨機數種子不同,rand()的隨機數值就不同,倘若每次的隨機數種子一樣,則rand()的值就一樣。所以要產生隨機數,則srand(seed)的隨機數種子必須也要隨機的。

用srand()產生隨機數種子

原型:void srand ( unsigned int seed );

作用是設置好隨機數種子,為了讓隨機數種子是隨機的,通常用time(NULL)的值來當seed。

time()用于隨機數種子

函數原型:time_t time ( time_t * timer );

time()函數表示返回1970-1-1 00:00:00 到當前時間的秒數。

用的時候這樣:srand(unsigned(time(NULL)));例如產生1~10之間的隨機整數

#include#includeint main(){ ?srand(time(NULL)); ?for(int i=0;i 10;i++) ?{ ? ?int randValue=rand()%10; ?}}

上面的程序中要注意srand是在for循環外面的,如果把srand放到for循環里面,則每次產生的隨機數都相同。

用rand()產生隨機數

原型:int rand ( void );

作用是產生一個隨機數,當然隨機數是有范圍的,為0~RAND_MAX之間,隨機數與隨機數種子有關。具體來說是,在產生隨機數 rand()被調用的時候,它會這樣執行:

如果用戶之前調用過 srand(seed)的話,他會重新調用一遍 srand(seed)以產生隨機數種子;

如果發現沒有調用過 srand(seed)的話,會自動調用 srand(1)一次。

如果調用srand(seed)產生的隨機數種子是一樣的.話(即seed的值相同),rand()產生的隨機數也相同。

所以,如果希望rand()每次調用產生的值都不一樣,就需要每次調用srand(seed)一次,而且seed不能相同。這里就是經常采用time(NULL)產生隨機數種子的原因。

C語言中可以使用rand()函數來生成一個從0到RAND_MAX的uniform分布。基于這個函數,我們可以構造出一些特定的隨機數生成器來滿足我們的需求。

(一)0到1的uniform分布:

//generate a random number in the range of [0,1]double uniform_zero_to_one(){ ?return (double)rand()/RAND_MAX;}

(二)任意實數區間的uniform分布:

//generate a random real number in [start,end]double uniform_real(double start,double end){ ?double rate=(double)rand()/RAND_MAX; ?return start+(end-start)*rate;}

(三)任意整數區間的uniform分布:

//generate a random integer number in [start,end)int uniform_integer(int start,int end){ ?int base=rand(); ?if(base==RAND_MAX) ? ?return uniform_integer(start,end); ?int range=end-start; ?int remainder=RAND_MAX%range; ?int bucket=RAND_MAX/range; ?if(baseRAND_MAX-remainder) ? ?return start+base/bucket; ?else ? ?return uniform_integer(start,end);}

這個函數要特別說明一下,平常時候我們都是用rand()%n來生成0到n-1的隨機數,但是按這種方法生成的分布并不是uniform的,另外由于RAND_MAX只有32767,因此要生成比這個數更大的隨機數需要另外想辦法,理論上可以直接用0到1的uniform分布直接放縮,但實際效果不好。這里給出一種移位方式的實現。

(四)32bits的隨機數

//generate a random 32 bits integer number int rand32(){ ?return ((rand()16)+(rand()1)+rand()%2);}

有了32bits的隨機數生成方法,就可以構造32bits范圍內的隨機整數區間了,方法和之前16bits的情況一樣。

(五)32bits范圍內的隨機整數區間

//generate a random 32bits integer number in [start,end) int uniform_integer_32(int start,int end){ ? int base=rand32(); ?if(base==RAND32_MAX) ? ?return uniform_integer_32(start,end); ?int range=end-start; ?int remainder=RAND32_MAX%range; ?int bucket=RAND32_MAX/range; ?if(baseRAND32_MAX-remainder) ? ?return start+base/bucket; ?else ? ?return uniform_integer_32(start,end);}

這里RAND32_MAX定義為0x7fffffff。

除此之外,利用rand()函數構造任意分布的隨機數也是個值得探討的問題。

理論上可以通過(0,1)的uniform分布,加上標準采樣方法(sampling)獲得。

網站名稱:C語言設計函數隨機 C語言中隨機函數
路徑分享:http://vcdvsql.cn/article22/hhhhjc.html

成都網站建設公司_創新互聯,為您提供自適應網站網站建設靜態網站外貿網站建設標簽優化動態網站

廣告

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

外貿網站建設