Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::negati...distribution(3) C++ Standard Libarystd::negati...distribution(3)

NAME
       std::negative_binomial_distribution  - std::negative_binomial_distribu-
       tion

Synopsis
	  Defined in header <random>
	  template< class IntType = int	>	 (since	C++11)
	  class	negative_binomial_distribution;

	  Produces random non-negative integer values i, distributed according
       to discrete
	  probability function:

		  \(P(i|k, p) =	\binom{k + i - 1}{i}  \cdot  p^k  \cdot	 (1  -
       p)^i\)P(i|k,p) =

		  k + i	 1
		  i

		    pk
		   (1  p)i

	  The  value represents	the number of failures in a series of indepen-
       dent yes/no trials
	  (each	succeeds with probability p), before exactly k	successes  oc-
       cur.

	  std::negative_binomial_distribution  satisfies RandomNumberDistribu-
       tion

Template parameters
		    The	result type generated by the generator.	The effect  is
       undefined if
	  IntType  -  this is not one of short,	int, long, long	long, unsigned
       short, unsigned
		    int, unsigned long,	or unsigned long long.

Member types
	  Member type	    Definition
	  result_type	    IntType
	  param_type(C++11) the	type of	 the  parameter	 set,  see  RandomNum-
       berDistribution.

Member functions
	  constructor	constructs new distribution
	  (C++11)	(public	member function)
	  reset		resets the internal state of the distribution
	  (C++11)	(public	member function)

Generation
	  operator()	generates the next random number in the	distribution
	  (C++11)	(public	member function)

Characteristics
	  p		returns	the distribution parameters
	  k		(public	member function)
	  param		gets or	sets the distribution parameter	object
	  (C++11)	(public	member function)
	  min		returns	the minimum potentially	generated value
	  (C++11)	(public	member function)
	  max		returns	the maximum potentially	generated value
	  (C++11)	(public	member function)

Non-member functions
	  operator==
	  operator!=		    compares two distribution objects
	  (C++11)		    (function)
	  (C++11)(removed in C++20)
	  operator<<		      performs	stream	input  and  output  on
       pseudo-random number
	  operator>>		    distribution
	  (C++11)		    (function template)

Example
       // Run this code

	#include <iostream>
	#include <iomanip>
	#include <string>
	#include <map>
	#include <random>

	int main()
	{
	    std::random_device rd;
	    std::mt19937 gen(rd());
	    // Pat goes	door-to-door selling cookies
	    // At each house, there's a	75% chance that	she sells one box
	    // how many	times will she be turned away before selling 5 boxes?
	    std::negative_binomial_distribution<> d(5, 0.75);

	    std::map<int, int> hist;
	    for(int n=0; n<10000; ++n) {
		++hist[d(gen)];
	    }
	    for(auto p : hist) {
		std::cout << std::setw(2) << p.first <<	' '
			  << std::string(p.second/100, '*') << '\n';
	    }
	}

Possible output:
	 0 ***********************
	 1 *****************************
	 2 **********************
	 3 *************
	 4 ******
	 5 ***
	 6 *
	 7
	 8
	 9
	10
	11

External links
	  Weisstein, Eric W.  "Negative	 Binomial  Distribution."  From	 Math-
       World--A	Wolfram	Web
	  Resource.

http://cppreference.com		  2022.07.31	 std::negati...distribution(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::negative_binomial_distribution&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help