亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

VC隨機(jī)函數(shù)srand和rand用法

 更新時(shí)間:2016年11月09日 20:39:11   投稿:mdxy-dxy  
VC中隨機(jī)函數(shù)最常用就是srand和rand(實(shí)際上是屬于標(biāo)準(zhǔn)C函數(shù)),其中srand負(fù)責(zé)設(shè)置隨機(jī)種子,rand則負(fù)責(zé)生成隨機(jī)數(shù)。使用此二隨機(jī)函數(shù)需要包含<stdlib.h>頭文件

前言:編程中經(jīng)常需要用到隨機(jī)數(shù),當(dāng)然程序(函數(shù))本身無(wú)法生成所謂的真實(shí)的隨機(jī)數(shù),還需要一個(gè)隨機(jī)種子,然后根據(jù)既定算法算出一個(gè)確定結(jié)果。如果我們只需要有限次或是隨機(jī)數(shù)時(shí)間要求間隔比較久的,也可直接使用當(dāng)前時(shí)間(時(shí)間戳)作為隨機(jī)數(shù)。既然時(shí)間可以作為隨機(jī)數(shù),那么為什么還需要專(zhuān)門(mén)的隨機(jī)函數(shù)呢?這就涉及到隨機(jī)序列的概率分布問(wèn)題,通過(guò)專(zhuān)門(mén)設(shè)計(jì)的隨機(jī)函數(shù)可以保證連續(xù)隨機(jī)數(shù)序列盡量貼近一均勻合理的概率分布。而不能像開(kāi)彩那樣,領(lǐng)導(dǎo)讓開(kāi)幾就開(kāi)幾,那樣重復(fù)概率太高了。

VC中隨機(jī)函數(shù)最常用就是srand和rand(實(shí)際上是屬于標(biāo)準(zhǔn)C函數(shù)),其中srand負(fù)責(zé)設(shè)置隨機(jī)種子,rand則負(fù)責(zé)生成隨機(jī)數(shù)。使用此二隨機(jī)函數(shù)需要包含<stdlib.h>頭文件。

一、srand和rand函數(shù)

1、srand函數(shù)
srand定義如下:void srand( unsigned int seed );
其中seed為無(wú)符號(hào)整數(shù),我們一般使用時(shí)間戳作為其參數(shù),取得時(shí)間戳,需要包含<time.h>頭文件。應(yīng)用示例參下文。
2、rand函數(shù)
rand()函數(shù)產(chǎn)生一個(gè)介于0~RAND_MAX之間的偽隨機(jī)整數(shù)(short型),RAND_MAX宏定義為0x7fff。如需要更大的隨機(jī)整數(shù),可使用多個(gè)隨機(jī)整數(shù)進(jìn)行組合運(yùn)算即可得到。

二、隨機(jī)數(shù)生成示例

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main( void )
{
 int i,r;
 srand( (unsigned)time( NULL ) );

 for( i = 0;i < 10;i++ ) {
  r=rand()%10;
  printf( " %3d\n", r);
 }
}

使用注意:
1、rand生成序列對(duì)于給定的srand種子來(lái)說(shuō),序列值組合是固定的
2、srand值在快速調(diào)用時(shí),time(NULL)可能不會(huì)更新,因?yàn)闀r(shí)間戳是以微秒計(jì)算的,所以微秒之內(nèi)的如果再次執(zhí)行srand和rand,則會(huì)得到相同的隨機(jī)值序列
3、每次設(shè)置隨機(jī)種子后,rand輸出會(huì)自動(dòng)復(fù)位到第一個(gè)初始值,種子相同,則初值及后續(xù)的序列相同
示例如下:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int foo() {
	int r;
	srand( (unsigned)time( NULL ) );
	r = rand()%100;
	return r;
}

void main( void ) {
	int i,r;

	srand((unsigned)time(NULL));
	for( i = 0; i < 10;i++ ) {
		r=rand()%100;
		printf( " %3d", r);
	}
	printf("\n");

	for(i=0; i<10;i++) {
		printf( " %3d", foo());
	}
	printf("\n");
}

輸出如下(可注意到第二行輸出完全相同):

76 69 10 95 37 85 25 99 4 33

76 76 76 76 76 76 76 76 76 76

參考資料:

http://msdn.microsoft.com/en-us/library/aa272944(v=vs.60).aspx

http://msdn.microsoft.com/en-us/library/aa272875(v=vs.60).aspx

相關(guān)文章

  • 利用C語(yǔ)言替換文件中某一行的方法

    利用C語(yǔ)言替換文件中某一行的方法

    大家都知道C語(yǔ)言提供了文件操作,但是替換文件的某一行比較麻煩,下面是我使用的一個(gè)方法,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 詳細(xì)分析C++ 數(shù)據(jù)封裝和數(shù)據(jù)抽象

    詳細(xì)分析C++ 數(shù)據(jù)封裝和數(shù)據(jù)抽象

    這篇文章主要介紹了C++ 數(shù)據(jù)封裝和數(shù)據(jù)抽象的的相關(guān)資料,文中代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C++繼承與菱形繼承詳細(xì)介紹

    C++繼承與菱形繼承詳細(xì)介紹

    繼承(inheritance)機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類(lèi)特性的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能,這樣產(chǎn)生新的類(lèi),稱(chēng)派生類(lèi)。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu),體現(xiàn)了由簡(jiǎn)單到復(fù)雜的認(rèn)知過(guò)程
    2022-08-08
  • C/C++淺析鄰接表拓?fù)渑判蛩惴ǖ膶?shí)現(xiàn)

    C/C++淺析鄰接表拓?fù)渑判蛩惴ǖ膶?shí)現(xiàn)

    這篇文章主要介紹了C/C++對(duì)于鄰接表拓?fù)渑判蛩惴ǖ膶?shí)現(xiàn),鄰接表是圖的一種鏈?zhǔn)酱鎯?chǔ)方法,其數(shù)據(jù)結(jié)構(gòu)包括兩部分:節(jié)點(diǎn)和鄰接點(diǎn)
    2022-07-07
  • C語(yǔ)言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解

    C語(yǔ)言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解的相關(guān)資料,這里提供實(shí)現(xiàn)實(shí)例幫助大家實(shí)現(xiàn)改功能,需要的朋友可以參考下
    2017-08-08
  • C/C++經(jīng)典楊輝三角問(wèn)題解決方案

    C/C++經(jīng)典楊輝三角問(wèn)題解決方案

    楊輝三角形,又稱(chēng)帕斯卡三角形、賈憲三角形、海亞姆三角形,它的排列形如三角形。本文將為大家介紹通過(guò)C++/C語(yǔ)言實(shí)現(xiàn)打印楊輝三角形的示例代碼,需要的可以參考一下
    2023-02-02
  • C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲開(kāi)發(fā)

    C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲開(kāi)發(fā)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲開(kāi)發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語(yǔ)言 深入講解條件編譯的用處

    C語(yǔ)言 深入講解條件編譯的用處

    C語(yǔ)言提供了條件編譯的語(yǔ)法,就是在編譯源碼的時(shí)候,可以選擇性地編譯指定的代碼。例如我們開(kāi)發(fā)一個(gè)兼容windows系統(tǒng)和linux系統(tǒng)運(yùn)行的項(xiàng)目,那么,一些與操作系統(tǒng)密切相關(guān)的代碼,就需要進(jìn)行選擇性編譯
    2022-04-04
  • C++容器適配器的概念與示例

    C++容器適配器的概念與示例

    C++?STL(標(biāo)準(zhǔn)模板庫(kù))是一套功能強(qiáng)大的?C++?模板類(lèi),提供了通用的模板類(lèi)和函數(shù),這些模板類(lèi)和函數(shù)可以實(shí)現(xiàn)多種流行和常用的算法和數(shù)據(jù)結(jié)構(gòu),如向量、鏈表、隊(duì)列、棧,今天我們來(lái)探究一下stl容器適配器的使用吧
    2023-01-01
  • C語(yǔ)言詳細(xì)分析結(jié)構(gòu)體的內(nèi)存對(duì)齊規(guī)則

    C語(yǔ)言詳細(xì)分析結(jié)構(gòu)體的內(nèi)存對(duì)齊規(guī)則

    C 數(shù)組允許定義可存儲(chǔ)相同類(lèi)型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶(hù)自定義的可用的數(shù)據(jù)類(lèi)型,它允許你存儲(chǔ)不同類(lèi)型的數(shù)據(jù)項(xiàng),本篇讓我們來(lái)了解C 的結(jié)構(gòu)體內(nèi)存對(duì)齊
    2022-07-07

最新評(píng)論