Discrete Distributions in Visual Basic QuickStart Sample
Illustrates how to use the classes that represent discrete probability distributions in the Numerics.NET.Statistics.Distributions namespace in Visual Basic.
View this sample in: C# F# IronPython
Option Infer On
Imports Numerics.NET.DataAnalysis
Imports Numerics.NET.Random
Imports Numerics.NET.Statistics.Distributions
' Demonstrates how to use classes that implement
' discrete probabililty distributions.
Module DiscreteDistributions
Sub Main()
' The license is verified at runtime. We're using
' a 30 day trial key here. For more information, see
' https://numerics.net/trial-key
Numerics.NET.License.Verify("64542-18980-57619-62268")
' 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:
Dim binomial As New BinomialDistribution(6, 0.6)
' The distribution's parameters are available through the
' NumberOfTrials and ProbabilityOfSuccess properties:
Console.WriteLine($"# of trials: {binomial.NumberOfTrials:F5}")
Console.WriteLine($"Prob. of success: {binomial.ProbabilityOfSuccess:F5}")
'
' Basic statistics
'
' The Mean property returns the mean of the distribution:
Console.WriteLine($"Mean: {binomial.Mean:F5}")
' The Variance and StandardDeviation are also available:
Console.WriteLine($"Variance: {binomial.Variance:F5}")
Console.WriteLine($"Standard deviation: {binomial.StandardDeviation:F5}")
' As are the skewness:
Console.WriteLine($"Skewness: {binomial.Skewness:F5}")
' The Kurtosis property returns the kurtosis supplement.
' The Kurtosis property for the normal distribution returns zero.
Console.WriteLine($"Kurtosis: {binomial.Kurtosis:F5}")
Console.WriteLine()
'
' Distribution functions
'
' The (cumulative) distribution function (CDF) is implemented by the
' DistributionFunction method:
Console.WriteLine($"CDF(4) = {binomial.DistributionFunction(4):F5}")
' The probability density function (PDF) is available as the
' Probability method:
Console.WriteLine($"PDF(4) = {binomial.Probability(4):F5}")
' The Probability method has an overload that returns the probability
' that a variate lies between two values:
Console.WriteLine("Probability(3, 5) = {0:F5}", binomial.Probability(3, 5))
Console.WriteLine()
'
' Random variates
'
' The Sample method returns a single random variate
' using the specified random number generator:
Dim rng As New MersenneTwister
Dim x As Integer = binomial.Sample(rng)
' The Sample method fills an array or vector with
' random variates. It has several overloads:
Dim xArray As Integer() = New Integer(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:
Dim h = binomial.GetExpectedHistogram(100)
Console.WriteLine("Expected distribution of 100 samples:")
For i = 0 To h.Length - 1
Console.WriteLine("{0} success(es) -> {1}", i, h(i))
Next
Console.WriteLine()
Console.WriteLine("Press Enter key to continue.")
Console.ReadLine()
End Sub
End Module