New Version 7.0!

Try it for free with our fully functional 60-day trial version.

Download now!

Get from Nuget

QuickStart Samples

Discrete Distributions QuickStart Sample (IronPython)

Illustrates how to use the classes that represent discrete probability distributions in the Extreme.Statistics.Distributions namespace in IronPython.

C# code Visual Basic code F# code Back to QuickStart Samples

import numerics

from System import Array

from Extreme.Statistics import *
from Extreme.Statistics.Distributions import *

#/ Demonstrates how to use classes that implement
#/ discrete probabililty distributions.

# This QuickStart Sample demonstrates the capabilities of
# the classes that implement discrete probability distributions.
# These classes inherit from the DiscreteDistribution class.
#
# For an illustration of classes that implement discrete probability
# distributions, see the ContinuousDistributions QuickStart Sample.
# 
# We illustrate the properties and methods of discrete distribution
# using a binomial distribution. The same properties and methods
# apply to all other discrete distributions.

# 
# Constructing distributions
#

# Many discrete probability distributions are related to Bernoulli trials, # events with a certain probability, p, of success. The number of trials
# is often one of the distribution's parameters.

# The binomial distribution has two constructors. Here, we create a
# binomial distribution for 6 trials with a probability of success of 0.6:
binomial = BinomialDistribution(6, 0.6)

# The distribution's parameters are available through the
# NumberOfTrials and ProbabilityOfSuccess properties:
print "# of trials:          {0}".format(binomial.NumberOfTrials)
print "Prob. of success:     {0:.5f}".format(binomial.ProbabilityOfSuccess)


#
# Basic statistics
#

# The Mean property returns the mean of the distribution:
print "Mean:                 {0:.5f}".format(binomial.Mean)

# The Variance and StandardDeviation are also available:
print "Variance:             {0:.5f}".format(binomial.Variance)
print "Standard deviation:   {0:.5f}".format(binomial.StandardDeviation)

# As are the skewness:
print "Skewness:             {0:.5f}".format(binomial.Skewness)

# The Kurtosis property returns the kurtosis supplement.
# The Kurtosis property for the normal distribution returns zero.
print "Kurtosis:             {0:.5f}".format(binomial.Kurtosis)
print 


#
# Distribution functions
#

# The (cumulative) distribution function (CDF) is implemented by the
# DistributionFunction method:
print "CDF(4) =            {0:.5f}".format(binomial.DistributionFunction(4))

# The probability density function (PDF) is available as the 
# Probability method:
print "PDF(4) =            {0:.5f}".format(binomial.Probability(4))
			
# The Probability method has an overload that returns the probability
# that a variate lies between two values:
print "Probability(3, 5) = {0:.5f}".format(binomial.Probability(3, 5))
print 

#
# Random variates
#

# The Sample method returns a single random variate 
# using the specified random number generator:
rng = Random.MersenneTwister()
x = binomial.Sample(rng)
# The Sample method fills an array or vector with
# random variates. It has several overloads:
xArray = Array.CreateInstance(int, 100)
# 1. Fill all values:
binomial.Sample(rng, xArray)
# 2. Fill only a range (start index and length are supplied)
binomial.Sample(rng, xArray, 20, 50)

# The GetExpectedHistogram method returns a Histogram that contains the
# expected number of samples in each bin:
h = binomial.GetExpectedHistogram(100)
print "Expected distribution of 100 samples:"
for bin in h.Bins:
	print "{0} success(es) -> {1}".format(bin.LowerBound, bin.Value)