InverseCDF[dist,q]
gives the inverse of the cumulative distribution function for the distribution dist as a function of the variable q.
InverseCDF
InverseCDF[dist,q]
gives the inverse of the cumulative distribution function for the distribution dist as a function of the variable q.
Details
- The inverse CDF at q is also referred to as the q
quantile of a distribution. - For a continuous distribution dist the inverse CDF at q is the value x such that CDF[dist,x]q.
- For a discrete distribution dist the inverse CDF at q is the smallest integer x such that CDF[dist,x]≥q.
- The value q can be symbolic or any number between 0 and 1.
Examples
open all close allBasic Examples (2)
The inverse CDF for a continuous univariate distribution:
InverseCDF[NormalDistribution[0, 1], p]Plot[%, {p, 0, 1}, Filling -> Axis]The inverse CDF for a discrete univariate distribution:
𝒟 = PoissonDistribution[5];DiscretePlot[InverseCDF[𝒟, p], {p, CDF[𝒟, Range[0, 10]]}, ExtentSize -> Right, ExtentMarkers -> {"Empty", "Filled"}]Scope (12)
Parametric Distributions (5)
InverseCDF[WeibullDistribution[2, 5], 1 / 4]InverseCDF[NegativeBinomialDistribution[20, 1 / 3], 1 / 5]Obtain a machine-precision result:
InverseCDF[WeibullDistribution[2, 5], 0.4]Obtain a result at any precision for a continuous distribution:
InverseCDF[WeibullDistribution[2, 5], N[1 / 4, 25]]Obtain a symbolic expression for the InverseCDF:
InverseCDF[ChiSquareDistribution[ν], x]Plot the InverseCDF:
Plot[InverseCDF[CauchyDistribution[1, 2], q], {q, 0, 1}, Filling -> Axis]DiscretePlot[InverseCDF[PoissonDistribution[7], q], {q, 0, 1, 1 / 50}]Derived Distributions (3)
InverseCDF for a truncated distribution:
InverseCDF[TruncatedDistribution[{2, 4}, ExponentialDistribution[1]], q]Plot[%, {q, 0, 1}, Filling -> Axis]Quadratic transformation of an exponential distribution:
InverseCDF[TransformedDistribution[x ^ 2, xExponentialDistribution[2]], q]InverseCDF[CensoredDistribution[{-2, 4}, CauchyDistribution[0, 1]], q]Nonparametric Distributions (2)
InverseCDF for nonparametric distributions:
r = RandomVariate[NormalDistribution[], 10 ^ 2];InverseCDF[HistogramDistribution[r], 0.2]InverseCDF[SmoothKernelDistribution[r], 0.2]InverseCDF[KernelMixtureDistribution[r], 0.2]InverseCDF[SurvivalDistribution[r], 0.2]InverseCDF[EmpiricalDistribution[r], 0.2]Compare with the value for the underlying parametric distribution:
InverseCDF[NormalDistribution[], 0.2]Plot the InverseCDF for a histogram distribution:
Plot[InverseCDF[HistogramDistribution[RandomVariate[NormalDistribution[], 10 ^ 3]], q]//Evaluate, {q, 0, 1}, Filling -> Axis, Exclusions -> None]Random Processes (2)
InverseCDF for the SliceDistribution of a random process:
InverseCDF[WienerProcess[μ, σ][t], q]Plot[Evaluate[% /. {μ -> 3, σ -> 1, q -> 1 / 20}], {t, 0, 1}]Find the InverseCDF of TemporalData at some time t=0.5:
td = RandomFunction[WienerProcess[1, 1], {0, 10, 0.05}, 100]InverseCDF[td[0.5], 0.4]Find the InverseCDF for a range of times together with all the simulations:
Show[ListLinePlot[td, PlotStyle -> Directive[Opacity[0.2], Thin]], Plot[InverseCDF[td[t], 0.4], {t, 0, 10}, PlotStyle -> Thick]]Generalizations & Extensions (2)
InverseCDF threads element-wise over lists:
InverseCDF[NormalDistribution[], {0.2, 0.3}]{InverseCDF[NormalDistribution[], 0.2], InverseCDF[NormalDistribution[], 0.3]}Specify the argument using units of percent or permil:
InverseCDF[NormalDistribution[], Quantity[75.3, "Percent"]]InverseCDF[NormalDistribution[], Quantity[753., "PerMil"]]InverseCDF[NormalDistribution[], 0.753]Applications (4)
Generate a random number from a distribution:
InverseCDF[StudentTDistribution[20], RandomReal[]]Find the quartiles of a distribution:
InverseCDF[ExponentialDistribution[λ], {1 / 4, 1 / 2, 3 / 4}]Quartiles[ExponentialDistribution[λ]]Generate random data for a distribution:
target = NormalDistribution[3, 1];
𝒟 = TransformedDistribution[Refine[InverseCDF[target, p], 0 ≤ p ≤ 1], pUniformDistribution[]];data = RandomVariate[𝒟, 10000];Show[
Histogram[data, 20, "PDF"],
Plot[PDF[target, x], {x, -9, 9}, PlotStyle -> Thick]]Compute mean of a distribution by integrating inverse CDF function:
Integrate[InverseCDF[WeibullDistribution[α, β], q], {q, 0, 1}, Assumptions -> DistributionParameterAssumptions[WeibullDistribution[α, β]]]Mean[WeibullDistribution[α, β]]Compute mean of 5:3 order statistics of the distribution:
Integrate[InverseCDF[WeibullDistribution[α, β], q] PDF[OrderDistribution[{UniformDistribution[], 5}, 3], q], {q, 0, 1}, Assumptions -> DistributionParameterAssumptions[WeibullDistribution[α, β]]]Mean[OrderDistribution[{WeibullDistribution[α, β], 5}, 3]]% == %%//FullSimplifyProperties & Relations (7)
InverseCDF is equivalent to Quantile for univariate distributions:
𝒟 = CauchyDistribution[a, b];Simplify[InverseCDF[𝒟, q] == Quantile[𝒟, q], 0 ≤ q ≤ 1]InverseCDF[,p] is continuous and strictly increasing for 0≤p≤1 and continuous:
𝒟 = ExponentialDistribution[2];Plot[InverseCDF[𝒟, p], {p, 0, 1}, Filling -> Axis]InverseCDF[,p] is piecewise constant and increasing for 0≤p≤1 and discrete:
𝒟 = GeometricDistribution[1 / 3];
d = Table[CDF[𝒟, k], {k, 0, 10}];Plot[InverseCDF[𝒟, p], {p, 0, 1}, Exclusions -> d, Filling -> Axis]The function is continuous from the left, and discontinuous from the right:
p = CDF[𝒟, 1];
ϵ = 0.01;{InverseCDF[𝒟, p - ϵ], InverseCDF[𝒟, p], InverseCDF[𝒟, p + ϵ]}InverseCDF[,p] is left-continuous and increasing for 0≤p≤1 and mixed:
𝒟 = MixtureDistribution[{1 / 2, 1 / 2}, {ExponentialDistribution[2], GeometricDistribution[1 / 2]}];Plot[InverseCDF[𝒟, p], {p, 0.5, 1}, Filling -> Axis]InverseCDF[,CDF[,x]]x for a continuous distribution :
𝒟 = ExponentialDistribution[λ];Simplify[InverseCDF[𝒟, CDF[𝒟, x]], x ≥ 0 && λ > 0]CDF[,InverseCDF[,p]]p for a continuous distribution :
Simplify[CDF[𝒟, InverseCDF[𝒟, p]], 0 < p < 1 && λ > 0]InverseCDF[,CDF[,x]]≤x for a discrete distribution :
𝒟 = GeometricDistribution[1 / 3];Plot[{InverseCDF[𝒟, CDF[𝒟, x]], x}, {x, 0, 10}]CDF[,InverseCDF[,p]]≥p for a discrete distribution :
Plot[{CDF[𝒟, InverseCDF[𝒟, p]], p}, {p, 0, 1}, Exclusions -> False]TransformedDistribution[InverseCDF[,p],pUniformDistribution[]] is :
𝒟 = ExponentialDistribution[2];PDF[TransformedDistribution[InverseCDF[𝒟, p], pUniformDistribution[]], x]PDF[𝒟, x]This can be used to generate random variates:
data = Map[InverseCDF[𝒟], RandomReal[{0, 1}, 10^4]];Show[Histogram[data, {0, 5, 0.25}, "PDF"], Plot[PDF[𝒟, x], {x, 0, 5}, PlotStyle -> Thick, PlotRange -> All]]DistributionFitTest[data, 𝒟]Possible Issues (2)
Symbolic closed forms do not exist for some distributions:
InverseCDF[BinomialDistribution[50, .5], q]InverseCDF[BinomialDistribution[50, .5], .75]Substitution of invalid values into symbolic outputs gives results that are not meaningful:
InverseCDF[CauchyDistribution[2, 3], y] /. {y -> {2, 3}}When giving the input as argument complete checking is done:
InverseCDF[CauchyDistribution[2, 3], {2, 3}]See Also
CDF Quantile InverseSurvivalFunction SurvivalFunction OrderDistribution
Function Repository: InverseSigmaConfidenceLevel
Tech Notes
Related Guides
History
Text
Wolfram Research (2007), InverseCDF, Wolfram Language function, https://reference.wolfram.com/language/ref/InverseCDF.html.
CMS
Wolfram Language. 2007. "InverseCDF." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/InverseCDF.html.
APA
Wolfram Language. (2007). InverseCDF. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/InverseCDF.html
BibTeX
@misc{reference.wolfram_2026_inversecdf, author="Wolfram Research", title="{InverseCDF}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/InverseCDF.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_inversecdf, organization={Wolfram Research}, title={InverseCDF}, year={2007}, url={https://reference.wolfram.com/language/ref/InverseCDF.html}, note=[Accessed: 13-June-2026]}