Files
C-Plus-Plus/da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html
2021-10-14 18:44:08 +00:00

527 lines
37 KiB
HTML

<!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">
<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.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: probability::geometric_dist::geometric_distribution Class Reference</title>
<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>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.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/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
<link href="../../doxygen.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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</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">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html','../../'); initResizable(); });
/* @license-end */
</script>
<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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../d2/d84/classprobability_1_1geometric__dist_1_1geometric__distribution-members.html">List of all members</a> </div>
<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="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa12088ba133dd0910103db0eb0ef2797"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aa12088ba133dd0910103db0eb0ef2797">geometric_distribution</a> (const float &amp;<a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>)</td></tr>
<tr class="memdesc:aa12088ba133dd0910103db0eb0ef2797"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for the geometric distribution. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aa12088ba133dd0910103db0eb0ef2797">More...</a><br /></td></tr>
<tr class="separator:aa12088ba133dd0910103db0eb0ef2797"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41051365f8ac7700f2ed5880a6760413"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a41051365f8ac7700f2ed5880a6760413">More...</a><br /></td></tr>
<tr class="separator:a41051365f8ac7700f2ed5880a6760413"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea8b0d649f0dc9a6f8baf3341a0b4960"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aea8b0d649f0dc9a6f8baf3341a0b4960">More...</a><br /></td></tr>
<tr class="separator:aea8b0d649f0dc9a6f8baf3341a0b4960"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a10c512e13dd3a052e1c6d7f4d6f0f2"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a0a10c512e13dd3a052e1c6d7f4d6f0f2">More...</a><br /></td></tr>
<tr class="separator:a0a10c512e13dd3a052e1c6d7f4d6f0f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee973db9f0435e0cb4cc70f8eb3447a1"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aee973db9f0435e0cb4cc70f8eb3447a1">More...</a><br /></td></tr>
<tr class="separator:aee973db9f0435e0cb4cc70f8eb3447a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08328dc7d62188427111f176b56a105a"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a08328dc7d62188427111f176b56a105a">More...</a><br /></td></tr>
<tr class="separator:a08328dc7d62188427111f176b56a105a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf762e88c66918d7afda4234f28a7ddf"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aaf762e88c66918d7afda4234f28a7ddf">More...</a><br /></td></tr>
<tr class="separator:aaf762e88c66918d7afda4234f28a7ddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8aae1cebcf42ed2332f1c7217c401aa3"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a8aae1cebcf42ed2332f1c7217c401aa3">More...</a><br /></td></tr>
<tr class="separator:a8aae1cebcf42ed2332f1c7217c401aa3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4620163a196709484225774d87de6d69"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a4620163a196709484225774d87de6d69">range_tries</a> (const uint32_t &amp;min_tries=1, const uint32_t &amp;max_tries=<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits</a>&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. <a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a4620163a196709484225774d87de6d69">More...</a><br /></td></tr>
<tr class="separator:a4620163a196709484225774d87de6d69"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ad5ed23a251dbe55ad1ed06bf1a465ad3"><td class="memItemLeft" align="right" valign="top"><a id="ad5ed23a251dbe55ad1ed06bf1a465ad3" name="ad5ed23a251dbe55ad1ed06bf1a465ad3"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>p</b></td></tr>
<tr class="memdesc:ad5ed23a251dbe55ad1ed06bf1a465ad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The succes probability p. <br /></td></tr>
<tr class="separator:ad5ed23a251dbe55ad1ed06bf1a465ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >A class to model the geometric distribution. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa12088ba133dd0910103db0eb0ef2797" name="aa12088ba133dd0910103db0eb0ef2797"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa12088ba133dd0910103db0eb0ef2797">&#9670;&nbsp;</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;&#160;</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span>: <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>(<a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>) {}</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_ad5ed23a251dbe55ad1ed06bf1a465ad3"><div class="ttname"><a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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> geometric_dist.cpp:57</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a08328dc7d62188427111f176b56a105a" name="a08328dc7d62188427111f176b56a105a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08328dc7d62188427111f176b56a105a">&#9670;&nbsp;</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;&#160;</td>
<td class="paramname"><em>k</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> {</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> 1.0f - <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>((1.0f - <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
<div class="ttc" id="apow_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a></div><div class="ttdeci">T pow(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution_a08328dc7d62188427111f176b56a105a_cgraph.svg" width="319" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a8aae1cebcf42ed2332f1c7217c401aa3" name="a8aae1cebcf42ed2332f1c7217c401aa3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8aae1cebcf42ed2332f1c7217c401aa3">&#9670;&nbsp;</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"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> {</div>
<div class="line"><a id="l00126" name="l00126"></a><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"><a id="l00127" name="l00127"></a><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"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_function" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aaf762e88c66918d7afda4234f28a7ddf">inverse_cumulative_distribution</a>(uniform_sample)) +</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> 1;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_aaf762e88c66918d7afda4234f28a7ddf"><div class="ttname"><a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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> geometric_dist.cpp:116</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> geometric_dist.cpp:48</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution_a8aae1cebcf42ed2332f1c7217c401aa3_cgraph.svg" width="576" height="158"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a41051365f8ac7700f2ed5880a6760413" name="a41051365f8ac7700f2ed5880a6760413"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41051365f8ac7700f2ed5880a6760413">&#9670;&nbsp;</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"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span>{ <span class="keywordflow">return</span> 1.0f / <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aaf762e88c66918d7afda4234f28a7ddf" name="aaf762e88c66918d7afda4234f28a7ddf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf762e88c66918d7afda4234f28a7ddf">&#9670;&nbsp;</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;&#160;</td>
<td class="paramname"><em>cdf</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/log.html">std::log</a>(1.0f - cdf) / <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/log.html">std::log</a>(1.0f - <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>);</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> }</div>
<div class="ttc" id="alog_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/log.html">std::log</a></div><div class="ttdeci">T log(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution_aaf762e88c66918d7afda4234f28a7ddf_cgraph.svg" width="340" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="aee973db9f0435e0cb4cc70f8eb3447a1" name="aee973db9f0435e0cb4cc70f8eb3447a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee973db9f0435e0cb4cc70f8eb3447a1">&#9670;&nbsp;</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;&#160;</td>
<td class="paramname"><em>k</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/pow.html">std::pow</a>((1.0f - <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> }</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution_aee973db9f0435e0cb4cc70f8eb3447a1_cgraph.svg" width="319" height="67"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a4620163a196709484225774d87de6d69" name="a4620163a196709484225774d87de6d69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4620163a196709484225774d87de6d69">&#9670;&nbsp;</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;&#160;</td>
<td class="paramname"><em>min_tries</em> = <code>1</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint32_t &amp;&#160;</td>
<td class="paramname"><em>max_tries</em> = <code><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits.html">std::numeric_limits</a>&lt;uint32_t&gt;::max()</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> {</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordtype">float</span> cdf_lower = <a class="code hl_function" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a08328dc7d62188427111f176b56a105a">cumulative_distribution</a>(min_tries - 1);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">float</span> cdf_upper = max_tries == <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/types/numeric_limits/max.html">std::numeric_limits&lt;uint32_t&gt;::max</a>()</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> ? 1.0f</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> : <a class="code hl_function" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#a08328dc7d62188427111f176b56a105a">cumulative_distribution</a>(max_tries);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">return</span> cdf_upper - cdf_lower;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> }</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_a08328dc7d62188427111f176b56a105a"><div class="ttname"><a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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> geometric_dist.cpp:104</div></div>
<div class="ttc" id="amax_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/numeric_limits/max.html">std::numeric_limits::max</a></div><div class="ttdeci">T max(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution_a4620163a196709484225774d87de6d69_cgraph.svg" width="555" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a0a10c512e13dd3a052e1c6d7f4d6f0f2" name="a0a10c512e13dd3a052e1c6d7f4d6f0f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a10c512e13dd3a052e1c6d7f4d6f0f2">&#9670;&nbsp;</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"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span>{ <span class="keywordflow">return</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(<a class="code hl_function" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#aea8b0d649f0dc9a6f8baf3341a0b4960">variance</a>()); }</div>
<div class="ttc" id="aclassprobability_1_1geometric__dist_1_1geometric__distribution_html_aea8b0d649f0dc9a6f8baf3341a0b4960"><div class="ttname"><a href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#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> geometric_dist.cpp:77</div></div>
<div class="ttc" id="asqrt_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a></div><div class="ttdeci">T sqrt(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution_a0a10c512e13dd3a052e1c6d7f4d6f0f2_cgraph.svg" width="435" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="aea8b0d649f0dc9a6f8baf3341a0b4960" name="aea8b0d649f0dc9a6f8baf3341a0b4960"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea8b0d649f0dc9a6f8baf3341a0b4960">&#9670;&nbsp;</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"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">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>
<div class="fragment"><div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span>{ <span class="keywordflow">return</span> (1.0f - <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>) / (<a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a> * <a class="code hl_variable" href="../../da/d19/classprobability_1_1geometric__dist_1_1geometric__distribution.html#ad5ed23a251dbe55ad1ed06bf1a465ad3">p</a>); }</div>
</div><!-- fragment -->
</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.html">geometric_dist.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../d4/ded/namespaceprobability.html">probability</a></li><li class="navelem"><b>geometric_dist</b></li><li class="navelem"><a class="el" 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.9.2 </li>
</ul>
</div>
</body>
</html>