国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法

C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法

2021-06-02 16:38淺墨_毛星云 C/C++

這篇文章主要介紹了C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

C++隨機(jī)函數(shù)random函數(shù)的使用方法

一、random函數(shù)不是ANSI C標(biāo)準(zhǔn),不能在gcc,vc等編譯器下編譯通過。 可改用C++下的rand函數(shù)來實(shí)現(xiàn)。

     1、C++標(biāo)準(zhǔn)函數(shù)庫提供一隨機(jī)數(shù)生成器rand,返回0-RAND_MAX之間均勻分布的偽隨機(jī)整數(shù)。 RAND_MAX必須至少為32767。rand()函數(shù)不接受參數(shù),默認(rèn)以1為種子(即起始值)。 隨機(jī)數(shù)生成器總是以相同的種子開始,所以形成的偽隨機(jī)數(shù)列也相同,失去了隨機(jī)意義。(但這樣便于程序調(diào)試) 

     2、C++中另一函數(shù)srand(),可以指定不同的數(shù)(無符號整數(shù)變元)為種子。但是如果種子相同,偽隨機(jī)數(shù)列也相同。一個(gè)辦法是讓用戶輸入種子,但是仍然不理想。 

     3、 比較理想的是用變化的數(shù),比如時(shí)間來作為隨機(jī)數(shù)生成器的種子。 time的值每時(shí)每刻都不同。所以種子不同,所以,產(chǎn)生的隨機(jī)數(shù)也不同。

?
1
2
3
4
5
6
7
8
9
10
11
// C++隨機(jī)函數(shù)(VC program)
#include <stdlib.h>
#include <iostream.h>
#include <time.h>
#define MAX 100
void main()
{
    srand( (unsigned)time( NULL ) );//srand()函數(shù)產(chǎn)生一個(gè)以當(dāng)前時(shí)間開始的隨機(jī)種子
   for (int i=0;i<10;i++)
   cout<<rand()%MAX<<endl;//MAX為最大值,其隨機(jī)域?yàn)?~MAX-1
}

二、rand()的用法   

    rand()不需要參數(shù),它會返回一個(gè)從0到最大隨機(jī)數(shù)的任意整數(shù),最大隨機(jī)數(shù)的大小通常是固定的一個(gè)大整數(shù)。 這樣,如果你要產(chǎn)生0~10的10個(gè)整數(shù),可以表達(dá)為:

?
1
int N = rand() % 11;

     這樣,N的值就是一個(gè)0~10的隨機(jī)數(shù),如果要產(chǎn)生1~10,則是這樣:

?
1
int N = 1 + rand() % 10;

  總結(jié)來說,可以表示為:  

?
1
a + rand() % n

     其中的a是起始值,n是整數(shù)的范圍。 若要0~1的小數(shù),則可以先取得0~10的整數(shù),然后均除以10即可得到隨機(jī)到十分位的10個(gè)隨機(jī)小數(shù),若要得到隨機(jī)到百分位的隨機(jī)小數(shù),則需要先得到0~100的10個(gè)整數(shù),然后均除以100,其它情況依
此類推。 

     通常rand()產(chǎn)生的隨機(jī)數(shù)在每次運(yùn)行的時(shí)候都是與上一次相同的,這是有意這樣設(shè)計(jì)的,是為了便于程序的調(diào)試。若要產(chǎn)生每次不同的隨機(jī)數(shù),可以使用srand( seed )函數(shù)進(jìn)行隨機(jī)化,隨著seed的不同,就能夠產(chǎn)生不同的隨機(jī)數(shù)。 

     如大家所說,還可以包含time.h頭文件,然后使用srand(time(0))來使用當(dāng)前時(shí)間使隨機(jī)數(shù)發(fā)生器隨機(jī)化,這樣就可以保證每兩次運(yùn)行時(shí)可以得到不同的隨機(jī)數(shù)序列(只要兩次運(yùn)行的間隔超過1秒)。

注:rand()產(chǎn)生的是0 to RAND_MAX (32767)上的隨機(jī)數(shù),而32767不能被11整除。

因此 int N = rand() % 11; 得到的隨機(jī)數(shù),并不是從0-10一致分布的取9,10的概率取0-8幾個(gè)數(shù)字的概率少了11/32767約為1/2978;

所以要取0~M的隨機(jī)數(shù),若M較小時(shí)這樣作問題不大,但M較大時(shí),例如M=30000,則取到0-2767的概率是取后面幾個(gè)數(shù)字的兩倍,嚴(yán)重不符合隨機(jī)分布!

三、按要求設(shè)置概率

 比如要設(shè)置一個(gè)10%的概率問題,我們可以采取rand()函數(shù)來實(shí)現(xiàn),在if條件句判斷里,用rand()得到的值%一個(gè)設(shè)定的值,再與另一個(gè)值做“==”運(yùn)算。

例如:

?
1
2
3
4
if(1==rand()%10)
{ //10%的概率達(dá)成,這里編輯余下代碼}
else
{ //90%的概率沒達(dá)成,這里編輯余下代碼}

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/poem_qianmo/article/details/7443540

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产亚洲精品久久久久久无几年桃 | 毛片网站大全 | 综合久久av | 国产高清视频在线 | 日本成人一区 | 成人免费视频在线观看 | 国产99久久精品一区二区永久免费 | 亚洲精品永久免费 | 日本天天操 | 美日韩av | 久久久久久综合 | 中国大陆高清aⅴ毛片 | 中文字幕在线影院 | 中文二区| 一区二区国产精品 | 不卡视频一区 | 中日韩午夜理伦电影免费 | 超碰成人免费 | 久久久久久久久国产 | 亚洲综合精品 | 日本免费在线视频 | 久热在线视频 | 久久99精品久久久久蜜臀 | 久久精品一 | 韩日av在线 | 欧美成人精品一区二区 | 美日韩免费视频 | 国产一区二区视频免费看 | 欧美一区二区在线观看 | 欧美日韩在线一区 | 久久久久久一区 | 国产在线一区二区三区 | 97精品国产 | 国产中文字幕一区 | 久久久久久久久一区二区三区 | 中文字幕在线精品 | 一区二区三区久久 | 亚洲国产精品99久久久久久久久 | 日韩一区中文 | 久久精品国产亚洲 | 久久综合久久综合久久综合 |