8.3 Random Normal Distribution Deviate

Rnorm
## function (n, mu = 0, sigma = 1) 
## {
##     Res = vector(length = n + 1)
##     i = 1
##     while (i <= n) {
##         x = runif(2)
##         v = 2 * x - 1
##         w = sum(v * v)
##         if (w < 1) {
##             y = sqrt(-2 * log(w)/w)
##             Res[i:(i + 1)] = mu + sigma * y * v
##             i = i + 2
##         }
##     }
##     return(Res[1:n])
## }
## <bytecode: 0x000001e2a4402218>
## <environment: namespace:math>

Test script

Rnorm(1)
## [1] 0.9562
Rnorm(2)
## [1] -0.11647 -0.03994
Rnorm(99)
##  [1]  0.5856808 -1.0099791  1.1415792 -1.1675802 -2.6265732  1.0998697  1.4434678
##  [8]  0.6906391 -0.4947883  1.1670436 -0.2566954 -0.8434067 -0.0002181 -1.1702060
## [15]  0.5468796 -0.9533570 -0.2190177  2.5064887  0.1911252 -0.6484961 -1.1278117
## [22] -0.5025491 -0.3707491 -0.2605610  0.0416529 -1.8304386  0.8280114 -2.9895111
## [29]  0.2048097  1.2524160  0.7353493  0.3163717 -0.2127312  0.8259111  0.2807934
## [36] -0.6479539 -0.1379451  0.6113709 -0.0522618  0.8061326 -0.2448366 -0.1906546
## [43] -1.4712821 -1.0458844  0.0657446 -0.9875163  0.2292707  1.4545333 -0.9471162
## [50] -2.4131461  1.1506710 -1.1330126  0.3144497 -0.0965260  0.4577856 -0.2374533
## [57]  1.7141085 -0.1749232  1.0313476 -0.3385889  0.1586307 -0.7074631 -1.2596124
## [64]  0.0020458 -0.3846457  0.5459215  0.1290750  1.0152684  0.8412292  2.6653161
## [71] -0.5996816 -1.0628533  0.8660642 -0.8307214 -0.7991867 -2.6079732  0.2291646
## [78]  0.9753094  0.8731347  0.2678966  0.5203177  1.8647660 -0.1541200  0.9166391
## [85] -0.3100315  1.7064158  0.2379974  0.6829395 -0.5102269  1.0036337  0.6083766
## [92] -1.3835624  0.0463585  1.0975269  0.5565030 -0.0498206  0.9314777  0.6924161
## [99] -1.4983149
x = Rnorm(10000)
summary(x)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -3.643  -0.682  -0.017  -0.008   0.667   4.010
sd(x)
## [1] 0.9944