亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從范圍生成隨機整數

從范圍生成隨機整數

C++
慕標琳琳 2019-06-23 17:02:29
從范圍生成隨機整數我需要一個函數,它將在給定的范圍內生成一個隨機整數(包括邊框值)。我沒有不合理的質量/隨機性要求,我有四個要求:我需要它快點。我的項目需要生成數百萬(有時甚至數千萬)隨機數,而我當前的生成器功能已經被證明是一個瓶頸。我需要它是合理的統一(使用蘭特()是完全好的)。最小-最大值范圍可以是從<32727,1>到<-32727,32727>的任何范圍.它必須是可播種的。我現在有以下C+代碼:output = min + (rand() * (int)(max - min) / RAND_MAX)問題是,只有當rand()=rand_max(對于Visualc+是1/32727)時才返回它不是真正的一致-max。對于諸如<-1,1>這樣的小范圍來說,這是一個主要問題,因為最后一個值幾乎永遠不會返回。于是我抓起筆和紙,提出了以下公式(它建立在(Int)(n+0.5)整數四舍五入技巧的基礎上):但它仍然沒有給我統一的分布。重復運行的10000個樣本給我的比率為37:50:13的數值-1,0。1.你能推薦更好的配方嗎?(甚至整個偽隨機數產生函數)
查看完整描述

3 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

一個快速的,略好于您的,但仍然不完全統一的分布式解決方案是

output = min + (rand() % static_cast<int>(max - min + 1))

除非范圍的大小是2次方,這種方法產生偏非均勻分布數字不管質量rand()..為了全面測試這種方法的質量,請讀這個.


查看完整回答
反對 回復 2019-06-23
  • 3 回答
  • 0 關注
  • 506 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號