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