random: adding rayleigh, gumbel, logistic, and power random floats.
parent
8e0df4df9c
commit
9e9d830ec0
|
@ -1,5 +1,5 @@
|
||||||
USING: random sequences tools.test kernel math math.functions
|
USING: random sequences tools.test kernel math math.constants
|
||||||
sets grouping random.private math.statistics ;
|
math.functions sets grouping random.private math.statistics ;
|
||||||
IN: random.tests
|
IN: random.tests
|
||||||
|
|
||||||
[ 4 ] [ 4 random-bytes length ] unit-test
|
[ 4 ] [ 4 random-bytes length ] unit-test
|
||||||
|
@ -76,3 +76,16 @@ IN: random.tests
|
||||||
50000 [ 2 3 laplace-random-float ] replicate
|
50000 [ 2 3 laplace-random-float ] replicate
|
||||||
[ mean 2 .2 ~ ] [ std 2 sqrt 3 * .2 ~ ] bi
|
[ mean 2 .2 ~ ] [ std 2 sqrt 3 * .2 ~ ] bi
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
{ t t }
|
||||||
|
[
|
||||||
|
50000 [ 12 rayleigh-random-float ] replicate
|
||||||
|
[ mean pi 2 / sqrt 12 * .2 ~ ]
|
||||||
|
[ std 2 pi 2 / - sqrt 12 * .2 ~ ] bi
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ t t }
|
||||||
|
[
|
||||||
|
50000 [ 3 4 logistic-random-float ] replicate
|
||||||
|
[ mean 3 .2 ~ ] [ std pi 4 * 3 sqrt / .2 ~ ] bi
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -242,6 +242,18 @@ ERROR: too-many-samples seq n ;
|
||||||
: inv-gamma-random-float ( shape scale -- n )
|
: inv-gamma-random-float ( shape scale -- n )
|
||||||
recip gamma-random-float recip ;
|
recip gamma-random-float recip ;
|
||||||
|
|
||||||
|
: rayleigh-random-float ( mode -- n )
|
||||||
|
random-unit log -2 * sqrt * ;
|
||||||
|
|
||||||
|
: gumbel-random-float ( loc scale -- n )
|
||||||
|
random-unit log neg log * - ;
|
||||||
|
|
||||||
|
: logistic-random-float ( loc scale -- n )
|
||||||
|
random-unit dup 1 swap - / log * + ;
|
||||||
|
|
||||||
|
: power-random-float ( alpha -- n )
|
||||||
|
[ random-unit log exp 1 swap - ] dip recip ^ ;
|
||||||
|
|
||||||
{
|
{
|
||||||
{ [ os windows? ] [ "random.windows" require ] }
|
{ [ os windows? ] [ "random.windows" require ] }
|
||||||
{ [ os unix? ] [ "random.unix" require ] }
|
{ [ os unix? ] [ "random.unix" require ] }
|
||||||
|
|
Loading…
Reference in New Issue