C++隨機函數

C++隨機函數(VC program):

#include <stdio.h>

#include <iostream>

#include <time.h>

using namespace std;

#define MAX 100

int main(int argc, char* argv[])

{

       srand( (unsigned)time( NULL ) );         //srand()函數產生一個以當前時間開始的隨機種子

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

              cout<<rand()%MAX<<endl;         //MAX爲最大值,其隨機域爲0~MAX-1

       return 0;

}


rand()通常的使用方法是這樣的:

rand()不需要參數,它會返回一個從0到最大隨機數的任意整數,最大隨機數的大小通常是固定的一個大整數。

這樣,如果你要產生0~1010個整數,可以表達爲:

int N = rand() % 11;

這樣,N的值就是一個0~10的隨機數,如果要產生1~10,則是這樣:

int N = 1 + rand() % 11;

總結來說,可以表示爲:

a + rand() % n

其中的a是起始值,n是整數的範圍。

若要0~1的小數,則可以先取得0~10的整數,然後均除以10即可得到隨機到十分位的10個隨機小數,若要得到隨機到百分位的隨機小數,則需要先得到0~10010個整數,然後均除以100,其它情況依此類推。

通常rand()產生的隨機數在每次運行的時候都是與上一次相同的,這是有意這樣設計的,是爲了便於程序的調試。若要產生每次不同的隨機數,可以使用srand( seed )函數進行隨機化,隨着seed的不同,就能夠產生不同的隨機數。

如大家所說,還可以包含time.h頭文件,然後使用srand( time(0))來使用當前時間使隨機數發生器隨機化,這樣就可22:10:5622:10:57以保證每兩次運行時可以得到不同的隨機數序列(只要兩次運行的間隔超過1)


隨機函數:<<The C++ Programming Language>>(隨機數生成的基本方法)

int randx = 0;

int rand()

{

    randx = randx * 1103515245 + 12345;

    return randx;

}

void srand(int a)

{

    randx = a;

}

22:11:14

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章