我正在運行一堆物理模擬,其中我需要隨機數。我在C++中使用標準的rand()
函數。關於隨機整數數字生成(C)的標準
所以它的工作原理是這樣的:首先我預先計算一組形式爲1/(1+exp(a))
的概率,對於一組不同的a
。他們double
類型作爲math
庫返回由exp
功能,然後事情必須與那些概率發生,只有兩個人,所以我產生一個隨機數0和1之間均勻分佈,並與預先計算相比,概率。要做到這一點,我用:
double p = double(rand()%101)/100.0;
所以我給0
和1
之間的隨機值都包括在內。這並不能糾正物理結果。我試過這個:
double p = double(rand()%1000001)/1000000.0;
這個工作。我不明白爲什麼所以我想要一些關於如何去做的標準。我的直覺告訴我,如果做
double p = double(rand()%(N+1))/double(N);
與N
足夠大,使得最小師(1/N
)比最小的概率1/1+exp(a)
然後我會越來越現實的隨機數要小得多。
我想知道爲什麼,雖然。
嗯,這顯然會給最好的結果。謝謝 – MyUserIsThis
順便說一句:'double(rand()%1000001)/1000000.0;'也不管用。 –