從范圍生成隨機整數我需要一個函數,它將在給定的范圍內生成一個隨機整數(包括邊框值)。我沒有不合理的質量/隨機性要求,我有四個要求:我需要它快點。我的項目需要生成數百萬(有時甚至數千萬)隨機數,而我當前的生成器功能已經被證明是一個瓶頸。我需要它是合理的統一(使用蘭特()是完全好的)。最小-最大值范圍可以是從<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 回答
- 0 關注
- 506 瀏覽
添加回答
舉報
0/150
提交
取消