Files
C-Plus-Plus/da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html
2025-07-09 10:53:16 +00:00

539 lines
33 KiB
HTML

<!-- HTML header for doxygen 1.12.0-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: probability::geometric_dist::geometric_distribution Class Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</script>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(function(){initNavTree('da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html','../../','d2/d84/classprobability_1_1geometric__dist_1_1geometric__distribution-members'); });
</script>
<div id="container">
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">probability::geometric_dist::geometric_distribution Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>A class to model the geometric distribution.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa12088ba133dd0910103db0eb0ef2797" id="r_aa12088ba133dd0910103db0eb0ef2797"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa12088ba133dd0910103db0eb0ef2797">geometric_distribution</a> (const float &amp;<a class="el" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>)</td></tr>
<tr class="memdesc:aa12088ba133dd0910103db0eb0ef2797"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for the geometric distribution. <br /></td></tr>
<tr class="memitem:a41051365f8ac7700f2ed5880a6760413" id="r_a41051365f8ac7700f2ed5880a6760413"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a41051365f8ac7700f2ed5880a6760413">expected_value</a> () const</td></tr>
<tr class="memdesc:a41051365f8ac7700f2ed5880a6760413"><td class="mdescLeft">&#160;</td><td class="mdescRight">The expected value of a geometrically distributed random variable X. <br /></td></tr>
<tr class="memitem:aea8b0d649f0dc9a6f8baf3341a0b4960" id="r_aea8b0d649f0dc9a6f8baf3341a0b4960"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aea8b0d649f0dc9a6f8baf3341a0b4960">variance</a> () const</td></tr>
<tr class="memdesc:aea8b0d649f0dc9a6f8baf3341a0b4960"><td class="mdescLeft">&#160;</td><td class="mdescRight">The variance of a geometrically distributed random variable X. <br /></td></tr>
<tr class="memitem:a0a10c512e13dd3a052e1c6d7f4d6f0f2" id="r_a0a10c512e13dd3a052e1c6d7f4d6f0f2"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0a10c512e13dd3a052e1c6d7f4d6f0f2">standard_deviation</a> () const</td></tr>
<tr class="memdesc:a0a10c512e13dd3a052e1c6d7f4d6f0f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The standard deviation of a geometrically distributed random variable X. <br /></td></tr>
<tr class="memitem:aee973db9f0435e0cb4cc70f8eb3447a1" id="r_aee973db9f0435e0cb4cc70f8eb3447a1"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee973db9f0435e0cb4cc70f8eb3447a1">probability_density</a> (const uint32_t &amp;k) const</td></tr>
<tr class="memdesc:aee973db9f0435e0cb4cc70f8eb3447a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">The probability density function. <br /></td></tr>
<tr class="memitem:a08328dc7d62188427111f176b56a105a" id="r_a08328dc7d62188427111f176b56a105a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a08328dc7d62188427111f176b56a105a">cumulative_distribution</a> (const uint32_t &amp;k) const</td></tr>
<tr class="memdesc:a08328dc7d62188427111f176b56a105a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The cumulative distribution function. <br /></td></tr>
<tr class="memitem:aaf762e88c66918d7afda4234f28a7ddf" id="r_aaf762e88c66918d7afda4234f28a7ddf"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaf762e88c66918d7afda4234f28a7ddf">inverse_cumulative_distribution</a> (const float &amp;cdf) const</td></tr>
<tr class="memdesc:aaf762e88c66918d7afda4234f28a7ddf"><td class="mdescLeft">&#160;</td><td class="mdescRight">The inverse cumulative distribution function. <br /></td></tr>
<tr class="memitem:a8aae1cebcf42ed2332f1c7217c401aa3" id="r_a8aae1cebcf42ed2332f1c7217c401aa3"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8aae1cebcf42ed2332f1c7217c401aa3">draw_sample</a> () const</td></tr>
<tr class="memdesc:a8aae1cebcf42ed2332f1c7217c401aa3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a (discrete) sample according to the geometrical distribution. <br /></td></tr>
<tr class="memitem:a4620163a196709484225774d87de6d69" id="r_a4620163a196709484225774d87de6d69"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4620163a196709484225774d87de6d69">range_tries</a> (const uint32_t &amp;min_tries=1, const uint32_t &amp;max_tries=std::numeric_limits&lt; uint32_t &gt;::max()) const</td></tr>
<tr class="memdesc:a4620163a196709484225774d87de6d69"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function computes the probability to have success in a given range of tries. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pri-attribs" class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ad5ed23a251dbe55ad1ed06bf1a465ad3" id="r_ad5ed23a251dbe55ad1ed06bf1a465ad3"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a></td></tr>
<tr class="memdesc:ad5ed23a251dbe55ad1ed06bf1a465ad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The succes probability p. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A class to model the geometric distribution. </p>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00055">55</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
</div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa12088ba133dd0910103db0eb0ef2797" name="aa12088ba133dd0910103db0eb0ef2797"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa12088ba133dd0910103db0eb0ef2797">&#9670;&#160;</a></span>geometric_distribution()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">probability::geometric_dist::geometric_distribution::geometric_distribution </td>
<td>(</td>
<td class="paramtype">const float &amp;</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel explicit">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor for the geometric distribution. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>The success probability </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00064">64</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 64</span>: <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>(<a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>) {}</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_ad5ed23a251dbe55ad1ed06bf1a465ad3"><div class="ttname"><a href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">probability::geometric_dist::geometric_distribution::p</a></div><div class="ttdeci">float p</div><div class="ttdoc">The succes probability p.</div><div class="ttdef"><b>Definition</b> <a href="../../de/d72/geometric__dist_8cpp_source.html#l00057">geometric_dist.cpp:57</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a08328dc7d62188427111f176b56a105a" name="a08328dc7d62188427111f176b56a105a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08328dc7d62188427111f176b56a105a">&#9670;&#160;</a></span>cumulative_distribution()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::cumulative_distribution </td>
<td>(</td>
<td class="paramtype">const uint32_t &amp;</td> <td class="paramname"><span class="paramname"><em>k</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The cumulative distribution function. </p>
<p>The sum of all probabilities up to (and including) k trials. Basically CDF(k) = P(x &lt;= k) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">k</td><td>The number of trials in [1,\infty) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The probability to have success within k trials </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00104">104</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 104</span> {</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">return</span> 1.0f - std::pow((1.0f - <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>), <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(k));</div>
<div class="line"><span class="lineno"> 106</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a8aae1cebcf42ed2332f1c7217c401aa3" name="a8aae1cebcf42ed2332f1c7217c401aa3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8aae1cebcf42ed2332f1c7217c401aa3">&#9670;&#160;</a></span>draw_sample()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint32_t probability::geometric_dist::geometric_distribution::draw_sample </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Generates a (discrete) sample according to the geometrical distribution. </p>
<dl class="section return"><dt>Returns</dt><dd>A geometrically distributed number in [1,\infty) </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00125">125</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 125</span> {</div>
<div class="line"><span class="lineno"> 126</span> <span class="keywordtype">float</span> uniform_sample = <a class="code hl_function" href="../../de/d72/geometric__dist_8cpp.html#a82964ca6180507deb5fafc71050012ba">generate_uniform</a>();</div>
<div class="line"><span class="lineno"> 127</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(</div>
<div class="line"><span class="lineno"> 128</span> <a class="code hl_function" href="#aaf762e88c66918d7afda4234f28a7ddf">inverse_cumulative_distribution</a>(uniform_sample)) +</div>
<div class="line"><span class="lineno"> 129</span> 1;</div>
<div class="line"><span class="lineno"> 130</span> }</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_aaf762e88c66918d7afda4234f28a7ddf"><div class="ttname"><a href="#aaf762e88c66918d7afda4234f28a7ddf">probability::geometric_dist::geometric_distribution::inverse_cumulative_distribution</a></div><div class="ttdeci">float inverse_cumulative_distribution(const float &amp;cdf) const</div><div class="ttdoc">The inverse cumulative distribution function.</div><div class="ttdef"><b>Definition</b> <a href="../../de/d72/geometric__dist_8cpp_source.html#l00116">geometric_dist.cpp:116</a></div></div>
<div class="ttc" id="ageometric__dist_8cpp_html_a82964ca6180507deb5fafc71050012ba"><div class="ttname"><a href="../../de/d72/geometric__dist_8cpp.html#a82964ca6180507deb5fafc71050012ba">probability::geometric_dist::generate_uniform</a></div><div class="ttdeci">float generate_uniform()</div><div class="ttdoc">Returns a random number between [0,1].</div><div class="ttdef"><b>Definition</b> <a href="../../de/d72/geometric__dist_8cpp_source.html#l00048">geometric_dist.cpp:48</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a41051365f8ac7700f2ed5880a6760413" name="a41051365f8ac7700f2ed5880a6760413"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41051365f8ac7700f2ed5880a6760413">&#9670;&#160;</a></span>expected_value()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::expected_value </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The expected value of a geometrically distributed random variable X. </p>
<dl class="section return"><dt>Returns</dt><dd>E[X] = 1/p </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00071">71</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 71</span>{ <span class="keywordflow">return</span> 1.0f / <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aaf762e88c66918d7afda4234f28a7ddf" name="aaf762e88c66918d7afda4234f28a7ddf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf762e88c66918d7afda4234f28a7ddf">&#9670;&#160;</a></span>inverse_cumulative_distribution()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::inverse_cumulative_distribution </td>
<td>(</td>
<td class="paramtype">const float &amp;</td> <td class="paramname"><span class="paramname"><em>cdf</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The inverse cumulative distribution function. </p>
<p>This functions answers the question: Up to how many trials are needed to have success with a probability of cdf? The exact floating point value is reported. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cdf</td><td>The probability in [0,1] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of (exact) trials. </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00116">116</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 116</span> {</div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">return</span> std::log(1.0f - cdf) / std::log(1.0f - <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>);</div>
<div class="line"><span class="lineno"> 118</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aee973db9f0435e0cb4cc70f8eb3447a1" name="aee973db9f0435e0cb4cc70f8eb3447a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee973db9f0435e0cb4cc70f8eb3447a1">&#9670;&#160;</a></span>probability_density()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::probability_density </td>
<td>(</td>
<td class="paramtype">const uint32_t &amp;</td> <td class="paramname"><span class="paramname"><em>k</em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The probability density function. </p>
<p>As we use the first definition of the geometric series (1), we are doing k - 1 failed trials and the k-th trial is a success. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">k</td><td>The number of trials to observe the first success in [1,\infty) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A number between [0,1] according to p * (1-p)^{k-1} </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00093">93</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 93</span> {</div>
<div class="line"><span class="lineno"> 94</span> <span class="keywordflow">return</span> std::pow((1.0f - <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>), <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(k - 1)) * <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>;</div>
<div class="line"><span class="lineno"> 95</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a4620163a196709484225774d87de6d69" name="a4620163a196709484225774d87de6d69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4620163a196709484225774d87de6d69">&#9670;&#160;</a></span>range_tries()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::range_tries </td>
<td>(</td>
<td class="paramtype">const uint32_t &amp;</td> <td class="paramname"><span class="paramname"><em>min_tries</em></span><span class="paramdefsep"> = </span><span class="paramdefval">1</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint32_t &amp;</td> <td class="paramname"><span class="paramname"><em>max_tries</em></span><span class="paramdefsep"> = </span><span class="paramdefval">std::numeric_limits&lt;uint32_t&gt;::max()</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>This function computes the probability to have success in a given range of tries. </p>
<p>Computes P(min_tries &lt;= x &lt;= max_tries). Can be used to calculate P(x &gt;= min_tries) by not passing a second argument. Can be used to calculate P(x &lt;= max_tries) by passing 1 as the first argument </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">min_tries</td><td>The minimum number of tries in [1,\infty) (inclusive) </td></tr>
<tr><td class="paramname">max_tries</td><td>The maximum number of tries in [min_tries, \infty) (inclusive) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The probability of having success within a range of tries [min_tries, max_tries] </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00145">145</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 147</span> {</div>
<div class="line"><span class="lineno"> 148</span> <span class="keywordtype">float</span> cdf_lower = <a class="code hl_function" href="#a08328dc7d62188427111f176b56a105a">cumulative_distribution</a>(min_tries - 1);</div>
<div class="line"><span class="lineno"> 149</span> <span class="keywordtype">float</span> cdf_upper = max_tries == std::numeric_limits&lt;uint32_t&gt;::max()</div>
<div class="line"><span class="lineno"> 150</span> ? 1.0f</div>
<div class="line"><span class="lineno"> 151</span> : <a class="code hl_function" href="#a08328dc7d62188427111f176b56a105a">cumulative_distribution</a>(max_tries);</div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordflow">return</span> cdf_upper - cdf_lower;</div>
<div class="line"><span class="lineno"> 153</span> }</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_a08328dc7d62188427111f176b56a105a"><div class="ttname"><a href="#a08328dc7d62188427111f176b56a105a">probability::geometric_dist::geometric_distribution::cumulative_distribution</a></div><div class="ttdeci">float cumulative_distribution(const uint32_t &amp;k) const</div><div class="ttdoc">The cumulative distribution function.</div><div class="ttdef"><b>Definition</b> <a href="../../de/d72/geometric__dist_8cpp_source.html#l00104">geometric_dist.cpp:104</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0a10c512e13dd3a052e1c6d7f4d6f0f2" name="a0a10c512e13dd3a052e1c6d7f4d6f0f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a10c512e13dd3a052e1c6d7f4d6f0f2">&#9670;&#160;</a></span>standard_deviation()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::standard_deviation </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The standard deviation of a geometrically distributed random variable X. </p>
<dl class="section return"><dt>Returns</dt><dd>\sigma = \sqrt{V[X]} </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00084">84</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 84</span>{ <span class="keywordflow">return</span> std::sqrt(<a class="code hl_function" href="#aea8b0d649f0dc9a6f8baf3341a0b4960">variance</a>()); }</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_aea8b0d649f0dc9a6f8baf3341a0b4960"><div class="ttname"><a href="#aea8b0d649f0dc9a6f8baf3341a0b4960">probability::geometric_dist::geometric_distribution::variance</a></div><div class="ttdeci">float variance() const</div><div class="ttdoc">The variance of a geometrically distributed random variable X.</div><div class="ttdef"><b>Definition</b> <a href="../../de/d72/geometric__dist_8cpp_source.html#l00077">geometric_dist.cpp:77</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aea8b0d649f0dc9a6f8baf3341a0b4960" name="aea8b0d649f0dc9a6f8baf3341a0b4960"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea8b0d649f0dc9a6f8baf3341a0b4960">&#9670;&#160;</a></span>variance()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::variance </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The variance of a geometrically distributed random variable X. </p>
<dl class="section return"><dt>Returns</dt><dd>V[X] = (1 - p) / p^2 </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00077">77</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 77</span>{ <span class="keywordflow">return</span> (1.0f - <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>) / (<a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a> * <a class="code hl_variable" href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>); }</div>
</div><!-- fragment -->
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="ad5ed23a251dbe55ad1ed06bf1a465ad3" name="ad5ed23a251dbe55ad1ed06bf1a465ad3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5ed23a251dbe55ad1ed06bf1a465ad3">&#9670;&#160;</a></span>p</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float probability::geometric_dist::geometric_distribution::p</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The succes probability p. </p>
<p class="definition">Definition at line <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html#l00057">57</a> of file <a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>probability/<a class="el" href="../../de/d72/geometric__dist_8cpp_source.html">geometric_dist.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="../../d4/ded/namespaceprobability.html">probability</a></li><li class="navelem"><b>geometric_dist</b></li><li class="navelem"><a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html">geometric_distribution</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0 </li>
</ul>
</div>
</body>
</html>