欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

一、srand和rand函數(shù)

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

二、隨機數(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生成序列對于給定的srand種子來說,序列值組合是固定的
2、srand值在快速調(diào)用時,time(NULL)可能不會更新,因為時間戳是以微秒計算的,所以微秒之內(nèi)的如果再次執(zhí)行srand和rand,則會得到相同的隨機值序列
3、每次設置隨機種子后,rand輸出會自動復位到第一個初始值,種子相同,則初值及后續(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

相關文章

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

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

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

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

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

    C++繼承與菱形繼承詳細介紹

    繼承(inheritance)機制是面向對象程序設計使代碼可以復用的最重要的手段,它允許程序員在保持原有類特性的基礎上進行擴展,增加功能,這樣產(chǎn)生新的類,稱派生類。繼承呈現(xiàn)了面向對象程序設計的層次結構,體現(xiàn)了由簡單到復雜的認知過程
    2022-08-08
  • C/C++淺析鄰接表拓撲排序算法的實現(xiàn)

    C/C++淺析鄰接表拓撲排序算法的實現(xiàn)

    這篇文章主要介紹了C/C++對于鄰接表拓撲排序算法的實現(xiàn),鄰接表是圖的一種鏈式存儲方法,其數(shù)據(jù)結構包括兩部分:節(jié)點和鄰接點
    2022-07-07
  • C語言實現(xiàn)進制轉換函數(shù)的實例詳解

    C語言實現(xiàn)進制轉換函數(shù)的實例詳解

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

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

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

    C語言實現(xiàn)貪吃蛇小游戲開發(fā)

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

    C語言 深入講解條件編譯的用處

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

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

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

    C語言詳細分析結構體的內(nèi)存對齊規(guī)則

    C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結構是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲不同類型的數(shù)據(jù)項,本篇讓我們來了解C 的結構體內(nèi)存對齊
    2022-07-07

最新評論