建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

博狗集團bodoggroup:隨機函數rand ()C++

?

一、C++中不能應用random()函數

random函數不是ANSI C標準,不能在gcc,vc等編譯器下編譯經由過程。但在C說話中int random(num)可以這樣應用,它返回的是0至num-1的一個隨機博狗集團bodoggroup數。 可改用C++下的rand函數來實現。

1、C++標準函數庫供給一隨機數天生器rand,返回0-RAND_MAX之間平均散播的偽隨機整數。 RAND_MAX必須至少為32767.rand()函數不吸收參數,默認以1為種子(即肇端值)。 隨機數天生器總因此相同的種子開始,以是形成的偽隨機數列也相同,掉去了隨機意義。(但這樣便于法度榜樣調試)

2、C++中另一函數srand(),可以指定不合的數(無符號整數變元)為種子。然則假如種子相同,偽隨機數列也相同。一個法子是讓用戶輸入種子,然則仍舊不抱負。

3、 對照抱負的是用變更的數,比如光陰來作為隨機數天生器的種子。 time的值不時候刻都不合。以是種子不合,以是,孕育發生的隨機數也不合。

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

#include

#include

#include

using namespace std;

#define MAX 100

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

{

srand( (unsigned)time( NULL ) );//s博狗集團bodoggrouprand()函數孕育發生一個以當前光陰開始的隨機種子.應該放在for等輪回語句前面 不然要很長光陰等待

for (int i=0;i

二、rand()的用法rand()不必要參數,它會返回一個從0到最大年夜隨機數的隨意率性整數,最大年夜隨機數的大年夜小平日是固定的一個大年夜整數。

/*maximumvaluereturnedby"rand"function

*/

#defineRAND_MAX0x7fffu

這個是bcc55中的定義,闡明這個整數的最大年夜數是0x7fffu,u代表unicode編碼。

這樣,假如你要孕育發生0~10的10個整數,可以表達為:

int N = rand() % 11;

這樣,N的值便是一個0~10的隨機數,假如要孕育發生1~10,則是這樣:

int N = 1 + rand() % 11;

總結來說,可以表示為:

a + rand() % n

此中的a是肇端值,n是整數的范圍。

a + rand() % (b-a+1) 就表示 a~b之間的一個隨機數

若要0~1的小數,則可以先取得0~10的整數,然后均除以10即可獲得隨機到十分位的10個隨機小數,若要獲得隨機到百分位的隨機小數,博狗集團bodoggroup則必要先獲得0~100的10個整數,然后均除以100,其它環境依此類推。

平日rand()孕育發生的隨機數在每次運行的時刻都是與上一次相同的,這是故意這博狗集團bodoggroup樣設計的,是為了便于法度榜樣的調試。若要孕育發生每次不合的隨機數,可以應用srand( seed )函數進行隨機化,跟著seed的不合,就能夠孕育發生不合的隨機數。

如大年夜家所說,還可以包孕time.h頭文件,博狗集團bodoggroup然后應用srand(time(0))來應用當前光陰使隨機數發生器隨機化,這樣就可以包管每兩次運行時可以獲得不合的隨機數序列(只要兩次運行的距離跨越1秒)。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
足球直播间预约态 腾讯游戏大厅有梭哈吗 免费贵阳捉鸡麻将 福利彩票18选7开奖结果 腾讯分分彩计划专业版 体育比分网 速8彩票安卓 福彩燕赵风采排列7 重庆百变王牌计划 彩票软件研发