有沒有人有最喜歡的增強隨機數發生器,你可以解釋一下如何實現它到代碼。我試圖讓梅森扭轉者工作,並想知道是否有人對其他人有偏好。增強隨機數發生器
Q
增強隨機數發生器
23
A
回答
63
該代碼被從升壓手冊適於在http://www.boost.org/doc/libs/1_42_0/libs/random/index.html:
#include <iostream>
#include "boost/random.hpp"
#include "boost/generator_iterator.hpp"
using namespace std;
int main() {
typedef boost::mt19937 RNGType;
RNGType rng;
boost::uniform_int<> one_to_six(1, 6);
boost::variate_generator< RNGType, boost::uniform_int<> >
dice(rng, one_to_six);
for (int i = 0; i < 6; i++) {
int n = dice();
cout << n << endl;
}
}
爲了解釋位:
mt19937
是Mersenne扭曲發生器,其產生的原始隨機數。此處使用typedef,因此您可以輕鬆更改隨機數生成器類型。rng
是扭曲發生器的一個實例。one_to_six
是分佈的一個實例。這指定了我們想要生成的數字以及它們所遵循的分佈。這裏我們想要1到6,均勻分佈。dice
是需要原始數字和分佈的東西,併爲我們創建了我們實際需要的數字。dice()
是用於dice
對象,它獲取下一個隨機數的分佈如下,模擬隨機六面骰子擲到operator()
的呼叫。
既然這樣,該代碼產生骰子的同一個序列中的每個時間拋出。您可以在生成器的構造函數中隨機化發生器:
RNGType rng(time(0));
或使用其seed()成員。
1
沒有一種適合所有人的RNG。有時統計屬性很重要,有時候是密碼學,有時候是原始速度。
+0
我並不一定想要一個適合所有人的尺寸,我只是知道有些人比另一個更喜歡一個,我想看看哪些人最喜歡。 – shinjuo 2010-02-14 03:19:49
4
我發現這個link它給出了不同的隨機數發生器的性能很好的概述。我已經從上面的鏈接複製的表,爲方便起見:
+-----------------------+-------------------+-----------------------------+------------------------+ | generator | length of cycle | approx. memory requirements | approx. relative speed | +-----------------------+-------------------+-----------------------------+------------------------+ | minstd_rand | 2^31-2 | sizeof(int32_t) | 40 | | rand48 | 2^48-1 | sizeof(uint64_t) | 80 | | lrand48 (C library) | 2^48-1 | - | 20 | | ecuyer1988 | approx. 2^61 | 2*sizeof(int32_t) | 20 | | kreutzer1986 | ? | 1368*sizeof(uint32_t) | 60 | | hellekalek1995 | 2^31-1 | sizeof(int32_t) | 3 | | mt11213b | 2^11213-1 | 352*sizeof(uint32_t) | 100 | | mt19937 | 2^19937-1 | 625*sizeof(uint32_t) | 100 | | lagged_fibonacci607 | approx. 2^32000 | 607*sizeof(double) | 150 | | lagged_fibonacci1279 | approx. 2^67000 | 1279*sizeof(double) | 150 | | lagged_fibonacci2281 | approx. 2^120000 | 2281*sizeof(double) | 150 | | lagged_fibonacci3217 | approx. 2^170000 | 3217*sizeof(double) | 150 | | lagged_fibonacci4423 | approx. 2^230000 | 4423*sizeof(double) | 150 | | lagged_fibonacci9689 | approx. 2^510000 | 9689*sizeof(double) | 150 | | lagged_fibonacci19937 | approx. 2^1050000 | 19937*sizeof(double) | 150 | | lagged_fibonacci23209 | approx. 2^1200000 | 23209*sizeof(double) | 140 | | lagged_fibonacci44497 | approx. 2^2300000 | 44497*sizeof(double) | 60 | +-----------------------+-------------------+-----------------------------+------------------------+
週期的長度:隨機數序列的長度開始之前重複
相關問題
- 1. C++二維數組和增強隨機數發生器
- 2. 隨機數發生器dev /隨機
- 3. 隨機數發生器自動隨機
- 4. Ç隨機數發生器
- 5. 僞隨機數發生器
- 6. RNG(隨機數發生器)
- 7. 隨機數發生器
- 8. Node.js隨機數發生器?
- 9. 隨機數發生器
- 10. 隨機數發生器,C++
- 11. 隨機數發生器
- 12. MersenneTwister隨機數發生器
- 13. Java隨機數發生器
- 14. 隨機數發生器,android
- 15. Vbscipt隨機數發生器
- 16. Verilog隨機數發生器
- 17. 隨機數發生器
- 18. 隨機數發生器
- 19. Erlang - 隨機數發生器
- 20. 隨機數組發生器
- 21. 隨機數發生器
- 22. 如何將增強隨機數發生器的狀態存儲爲const char *?
- 23. 隨機發生器
- 24. 隨機數發生器隨着警報
- 25. 隨機數發生器產生相同的隨機數
- 26. 隨機數發生器和計數器
- 27. 無偏隨機數發生器使用偏倚的隨機數發生器
- 28. 機器人隨機數發生器不夠隨機
- 29. 隨機數發生器產生重複
- 30. C - 用隨機數發生器發出
而且是有最小的任何方式和最大的整數分佈的無需構建新的「骰子」而改變? – 2012-06-05 12:58:49
任何人都知道如何設置這個發生器的隨機播種? – 2015-04-30 16:38:36