represents a binomial process with event probability p.
BinomialProcess
represents a binomial process with event probability p.
Details
- BinomialProcess is a discrete-time and discrete-state process.
- BinomialProcess at time n is the number of events in the interval 0 to n.
- The number of events in the interval 0 to n follows BinomialDistribution[n,p].
- The times between events are independent and follow GeometricDistribution[p].
- BinomialProcess can be used with such functions as Mean, PDF, Probability, and RandomFunction.
Examples
open all close allBasic Examples (3)
data = RandomFunction[BinomialProcess[1 / 3], {0, 50}]ListPlot[data, Filling -> Axis]Mean[BinomialProcess[p][t]]Variance[BinomialProcess[p][t]]CovarianceFunction[BinomialProcess[p], s, t]DiscretePlot3D[CovarianceFunction[BinomialProcess[.3], s, t], {s, 1, 10}, {t, 1, 10}, ExtentSize -> 1 / 2, ColorFunction -> "Rainbow"]Scope (11)
Basic Uses (5)
Simulate an ensemble of paths:
data = RandomFunction[BinomialProcess[0.4], {0, 50}, 4]ListPlot[data, Filling -> Axis]Compare paths for different values of process parameter:
sample[p_] := (SeedRandom[3];RandomFunction[BinomialProcess[p], {0, 30}])pars = {.1, .4, .7};ListPlot[sample[#], Filling -> Axis, PlotLabel -> StringJoin["p = ", ToString[#]]]& /@ parssample = RandomFunction[BinomialProcess[.3], {1, 10 ^ 3}];Estimate the distribution parameter from sample data:
edist = EstimatedProcess[sample, BinomialProcess[p]]CorrelationFunction[BinomialProcess[p], s, t]Absolute correlation function:
AbsoluteCorrelationFunction[BinomialProcess[p], s, t]Process Slice Properties (6)
Univariate SliceDistribution:
DiscretePlot[Evaluate@Table[PDF[BinomialProcess[.8][t], x], {t, times = {5, 7, 12}}], {x, 0, 15}, PlotStyle -> PointSize[Medium], PlotLegends -> (StringJoin["t = ", ToString[#]]& /@ times)]SliceDistribution[BinomialProcess[p], t]Univariate probability density:
PDF[BinomialProcess[p][t], x]Compare to the probability density of BinomialDistribution:
PDF[BinomialDistribution[t, p], x]% - %%Multi-time slice distribution:
SliceDistribution[BinomialProcess[p], {1, 3, 7}]//MeanHigh-order probability density function:
PDF[BinomialProcess[.3][{1, 3, 7}], {x, y, z}]Compute the expectation of an expression:
Expectation[x[t] ^ 2 + x[t], xBinomialProcess[p]]//PiecewiseExpandCalculate the probability of an event:
Probability[x[t] > 8, xBinomialProcess[p]]DiscretePlot[Evaluate@Table[Skewness[BinomialProcess[p][t]], {p, pars = {.1, .3, .5, .7}}], {t, 1, 8}, PlotLegends -> (StringJoin["p = ", ToString[#]]& /@ pars)]Skewness[BinomialProcess[p][t]]Limit[Skewness[BinomialProcess[p][t]], t -> ∞, Assumptions -> 1 > p > 0]Limit[Skewness[BinomialProcess[p][t]], t -> 0, Assumptions -> 1 > p > 0, Direction -> "FromAbove"]Find for what values of the parameter BinomialProcess is symmetric:
Solve[Skewness[BinomialProcess[p][t]] == 0, p]DiscretePlot[Evaluate@Table[Kurtosis[BinomialProcess[p][t]], {p, pars = {.1, .2, .5, .7}}], {t, 1, 8}, PlotLegends -> (StringJoin["p = ", ToString[#]]& /@ pars)]Kurtosis[BinomialProcess[p][t]]Limit[Kurtosis[BinomialProcess[p][t]], t -> ∞, Assumptions -> 1 > p > 0]Limit[Kurtosis[BinomialProcess[p][t]], t -> 0, Assumptions -> 1 > p > 0, Direction -> "FromAbove"]Find for what values of the parameter BinomialProcess is mesokurtic:
Solve[Kurtosis[BinomialProcess[p][t]] == 3, p]N[%]Moment has no closed form for symbolic order:
Moment[BinomialProcess[p][t], 4]CharacteristicFunction[BinomialProcess[p][t], w]MomentGeneratingFunction[BinomialProcess[p][t], w]CentralMoment has no closed form for symbolic order:
CentralMoment[BinomialProcess[p][t], 3]CentralMomentGeneratingFunction[BinomialProcess[p][t], w]FactorialMoment and its generating function:
FactorialMoment[BinomialProcess[p][t], r]FactorialMomentGeneratingFunction[BinomialProcess[p][t], w]Cumulant has no closed form for symbolic order:
Cumulant[BinomialProcess[p][t], 7]CumulantGeneratingFunction[BinomialProcess[p][t], w]Applications (4)
A quality assurance inspector randomly selects a series of 10 parts from a manufacturing process that is known to produce 20% bad parts. Find the probability that the inspector gets at most one bad part:
selectionProcess = BinomialProcess[0.2];The probability of selecting at most one bad part:
NProbability[x[10] ≤ 1, xselectionProcess]It is known that, on average, 50% of the residents in a city like a certain TV program. Find the probability that at least 55% of residents will report that they like a program, in a survey of 804 people from the city:
programPopularity = BinomialProcess[0.5];The probability that at least 55% of the residents in the sample will like the program:
n = 804;
Probability[x[n] / n ≥ 0.55, xprogramPopularity]A packet consisting of a string of
symbols is transmitted over a noisy channel. Each symbol has a probability 0.0001 of being transmitted in error. Find the largest
for which the probability of incorrect transmission (at least one symbol in error) is less than 0.001:
transmissionProcess = BinomialProcess[1 / 10000];The probability of an error in the transmission:
prob[n_] = Probability[x > 0, xtransmissionProcess[n]]Plot probability of a transmission error together with error limit:
errlimit = 1 / 1000;
ListLogPlot[Transpose@Table[{prob[n], errlimit}, {n, 0, 15}], Joined -> True, PlotLegends -> {"probability", "error limit"}]Find the largest
for which the probability of incorrect transmission is less than
:
Maximize[{n, prob[n] ≤ errlimit && n∈Integers && 5 ≤ n ≤ 15}, n]Find the price of a European call option after the third period in a multi-period binomial model, given that the initial price of the underlying is $100, strike price is $102, interest rate is 1% per period, and the stock moves up by 7% or down by a factor of 1/1.07:
s0 = 100;
strike = 102;
rate = 1.01;
up = 1.07;
down = 1 / 1.07;
T = 3;price = BinomialProcess[(rate - down) / (up - down)];Expectation[1 / rate ^ T Max[s0 up ^ proc[T] down ^ (T - proc[T]) - strike, 0], procprice]Properties & Relations (5)
Binomial process is weakly stationary only for p equal to 0:
WeakStationarity[BinomialProcess[p]]A BinomialProcess
is the sum of a BernoulliProcess
with
:
SeedRandom[3];
bernoulli = RandomFunction[BernoulliProcess[p = 17 / 32], {20}];ListPlot[bernoulli, Filling -> Axis]accumulated = Accumulate[bernoulli]ListPlot[accumulated, Filling -> Axis]Compare to the binomial process:
SeedRandom[3];
sample = RandomFunction[BinomialProcess[p], {1, 21}];binomial = TimeSeriesShift[sample, -1];ListPlot[{binomial, accumulated}, Filling -> Axis, PlotStyle -> {PointSize[.05], PointSize[0.02]}, PlotLegends -> {"binomial", "accumulated Bernoulli"}]The time between events in a binomial process follows a PascalDistribution:
binomial = RandomFunction[BinomialProcess[1 / 3], {10 ^ 4}];Calculate times between changes:
times = Length /@ Split[binomial["Values"]];h = Histogram[times, {Min[times] - 0.5, Max[times] + 0.5, 1}, "PDF"]edist = EstimatedDistribution[times, PascalDistribution[1, p]]Compare the data histogram to the estimated probability density function:
Show[h, DiscretePlot[PDF[edist, x], {x, 0, Max[times]}, PlotStyle -> PointSize[Medium]]]DistributionFitTest[times, edist, "TestConclusion"]Transition probability between two states:
Table[DiscretePlot[Probability[(x[12] == Subscript[x, 2])(x[7] == Subscript[x, 1]), xBinomialProcess[.6]], {Subscript[x, 2], 0, 13}, ExtentSize -> 1 / 2, PlotLabel -> StringJoin["SubscriptBox[x, 1] = ", ToString[Subscript[x, 1]]]], {Subscript[x, 1], {1, 3, 5, 7}}]Probability[(x[Subscript[t, 2]] == Subscript[x, 2])(x[Subscript[t, 1]] == Subscript[x, 1]), xBinomialProcess[p], Assumptions -> 0 < Subscript[t, 1] < Subscript[t, 2] && 0 ≤ Subscript[x, 1] ≤ Subscript[t, 1] && 0 ≤ Subscript[x, 2] ≤ Subscript[t, 2]]//SimplifyBinomialProcess is a special case of CompoundRenewalProcess:
proc = CompoundRenewalProcess[PascalDistribution[1, p], BernoulliDistribution[1]];proc[t]//MeanMean[BinomialProcess[p][t]]Create empirical covariance functions:
sample1 = RandomFunction[proc /. p -> .3, {30}, 10 ^ 3];cov1[s_, t_] := Covariance[sample1["SliceData", s], sample1["SliceData", t]]sample2 = RandomFunction[BinomialProcess[.3], {0, 30}, 10 ^ 3];cov2[s_, t_] := Covariance[sample2["SliceData", s], sample2["SliceData", t]]Compare the covariance functions:
DiscretePlot3D[#[s, t], {s, 1, 15}, {t, 1, 15}, ExtentSize -> 1 / 2, ColorFunction -> "Rainbow", PlotRange -> {0, 4}]& /@ {cov1, cov2}Neat Examples (1)
Simulate 500 paths from a binomial process:
data = RandomFunction[BinomialProcess[.7], {50}, 500];Take a slice at 50 and visualize its distribution:
sd = data["SliceData", 50];cf = ColorData["Rainbow"];
sliced = BarChart[Last[#], Axes -> False, BarOrigin -> Left, AspectRatio -> 4, ChartStyle -> (cf /@ Rescale[MovingAverage[First[#], 2], {Min[sd], Max[sd]}, {0, 1}]), ImageSize -> 30]&[HistogramList[sd, {Range[Min[sd], Max[sd], (Max[sd] - Min[sd]) / 15]}]];Plot paths and histogram distribution of the slice distribution at 50:
ListLinePlot[data, ImageSize -> 400, PlotRange -> All,
AspectRatio -> 3 / 4, Epilog -> Inset[sliced, {50.5, Mean[sd]}, {0, 7.5}], PlotStyle -> (cf /@ Rescale[sd]), BaseStyle -> Directive[Thin, Opacity[0.5]], PlotRangePadding -> {{0, 20}, {.5, 7}}]Related Guides
History
Text
Wolfram Research (2012), BinomialProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/BinomialProcess.html.
CMS
Wolfram Language. 2012. "BinomialProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/BinomialProcess.html.
APA
Wolfram Language. (2012). BinomialProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BinomialProcess.html
BibTeX
@misc{reference.wolfram_2026_binomialprocess, author="Wolfram Research", title="{BinomialProcess}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/BinomialProcess.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_binomialprocess, organization={Wolfram Research}, title={BinomialProcess}, year={2012}, url={https://reference.wolfram.com/language/ref/BinomialProcess.html}, note=[Accessed: 13-June-2026]}