1. 程式人生 > >正態隨機數和柯西隨機數

正態隨機數和柯西隨機數

要想實現隨機數和柯西隨機數,先要有任意隨機數產生,後面柯西需要。程式碼基於C++,如下:

template<typename T>
T randT(T Lower, T Upper)
{
    T temp;
    if (Lower > Upper)
    {
        temp = Upper;
        Upper = Lower;
        Lower = temp;
    }
    return (double)rand()/RAND_MAX *(Upper - Lower) + Lower;
}

正態隨機數產生,完美

double N(double
mu, double sigma) { int i; double r, sum = 0.0; if (sigma <= 0.001) //強制拉回,以防止方差小於0 sigma = 0.001; for (i = 1; i <= 12; i++) sum = sum + randT<double>(0,1); r = (sum - 6.00)*sigma + mu; return r; }

柯西隨機數產生,柯西隨機數也本質是兩個服從正態分佈N(0,1)產生的隨機數的比值!

double cauchy(double
mu, double lamda) { double u = randT<double>(0,1); return mu - lamda / tan(PI*u); }