README

Statistics::Distributions

Raku package for statistical distributions and related random variates generations.

Installation

From Zef ecosystem:

zef install Statistics::Distributions

From GitHub:

zef install https://github.com/antononcube/Raku-Statistics-Distributions.git

Random reals

This module provides the function random-real that can be used to generate lists of real numbers using the uniform distribution.

Here is a random real:

use Statistics::Distributions;
say random-real(); 
# 0.17541845878637907

Here is a random real between 0 and 20:

say random-real(20); 
# 16.028516092944255

Here are six random reals between -2 and 12:

say random-real([-2,12], 6);
# (10.890321155441887 9.250329907971087 11.221827780422139 10.947882003708111 7.443503118508962 11.315959320648535)

Here is a 4-by-3 array of random reals between -3 and 3:

say random-real([-3,3], [4,3]);
# [[-1.8271015858824613 -0.9451368646135272 -1.3073987032431427]
#  [0.11530235188287286 2.58526166208536 1.8889232976832053]
#  [0.7458748437637528 0.17395147714974346 1.3111028238318596]
#  [2.4885123717852453 0.6243378945606981 -0.19171147490052398]]

Remark: The signature design follows Mathematica's function RandomReal.

Random variates

This module provides the function random-variate that can be used to generate lists of real numbers using distribution specifications.

Here are examples:

say random-variate(BernoulliDistribution.new(:p(0.3)), 1000).BagHash.Hash; 
# {0 => 703, 1 => 297}
say random-variate(BinomialDistribution.new(:n(10), :p(0.2)), 10); 
# (1 2 2 1 2 3 1 2 4 2)
say random-variate(NormalDistribution.new( ยต => 10, ฯƒ => 20), 5); 
# (-26.342123946040758 13.3280212791122 24.292815398564116 24.181585941745993 9.574089558980965)
say random-variate(UniformDistribution.new(:min(2), :max(60)), 5);
# (16.64454230198472 26.447351609698725 55.084471267095836 38.982409556010175 54.98503472435345)

Remark: Only Normal distribution and Uniform distribution are implemented at this point.

Remark: The signature design follows Mathematica's function RandomVariate.

Here is an example of 2D array generation:

say random-variate(NormalDistribution.new, [3,4]);
# [[-0.30885438533910603 0.5365343568625571 -0.6755139831111151 2.1574484398482277]
#  [-0.9980568977738549 -2.2435034113979224 -0.3572811339948709 -0.2187767800023108]
#  [0.29698698195857154 0.463105948876437 -1.3438767699675596 0.7011538348300886]]

Statistics::Distributions v0.1.0

Raku package for statistical distributions and related random variates generations.

Authors

  • Anton Antonov

License

Artistic-2.0

Dependencies

Math::SpecialFunctions

Test Dependencies

Provides

  • Statistics::Distributions
  • Statistics::Distributions::Defined
  • Statistics::Distributions::Utilities

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.