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

FreeBSD Manual Pages

  
 
  

home | help
std::rand(3)		      C++ Standard Libary		  std::rand(3)

NAME
       std::rand - std::rand

Synopsis
	  Defined in header <cstdlib>
	  int rand();

	  Returns a pseudo-random integral value from the range	[0, RAND_MAX].

	  std::srand()	seeds  the  pseudo-random  number  generator  used  by
       rand(). If rand() is
	  used before any calls	to std::srand(), rand()	behaves	as if  it  was
       seeded with
	  std::srand(1).

	  Each	time  rand()  is seeded	with std::srand(), it must produce the
       same sequence of
	  values on successive calls.

	  Other	functions in the standard library may call rand. It is	imple-
       mentation-defined
	  which	functions do so.

	  It is	implementation-defined whether rand() is thread-safe.

Parameters
	  (none)

Return value
	  Pseudo-random	integral value between 0 and RAND_MAX.

Notes
	  There	 are  no  guarantees  as to the	quality	of the random sequence
       produced. In the
	  past,	some implementations of	rand() have had	 serious  shortcomings
       in the
	  randomness, distribution and period of the sequence produced (in one
       well-known
	  example, the low-order bit simply alternated between 1 and 0 between
       calls).

	  rand()  is  not  recommended	for  serious  random-number generation
       needs.
	  It is	recommended to use C++11's random number generation facilities
       to replace
	  rand().
	  (since C++11)

Example
       // Run this code

	#include <cstdlib>
	#include <ctime>
	#include <iostream>

	int main()
	{
	    std::srand(std::time(nullptr)); // use current time	 as  seed  for
       random generator
	    int	random_value = std::rand();
	    std::cout  <<  "Random value on [0,	" << RAND_MAX << "]: " << ran-
       dom_value << '\n';

	    for	(const int times = 8; const int	sides :	{2, 4, 6, 8})
	    {
		std::cout << "Roll " <<	sides << "-sided dice "	<< times <<  "
       times: ";
		for (int n = 0;	n != times; ++n)
		{
		    int	x = sides + 1;
		    while (x > sides)
			x = 1 +	std::rand() / ((RAND_MAX + 1u) / sides);
			    // Note: 1 + rand()	% sides	is biased
		    std::cout << x << '	';
		}
		std::cout << '\n';
	    }
	}

Possible output:
	Random value on	[0, 2147483647]: 948298199
	Roll 2-sided dice 8 times: 2 2 1 2 1 1 2 2
	Roll 4-sided dice 8 times: 1 3 4 2 1 3 3 1
	Roll 6-sided dice 8 times: 3 2 1 6 6 4 4 2
	Roll 8-sided dice 8 times: 4 5 6 6 3 6 1 2

See also
	  uniform_int_distribution  produces integer values evenly distributed
       across a	range
	  (C++11)		   (class template)
	  srand			   seeds pseudo-random number generator
				   (function)
	  RAND_MAX		    maximum  possible	value	generated   by
       std::rand
				   (macro constant)
	  randint		   generates a random integer in the specified
       range
				   (function template)
	  C documentation for
	  rand

http://cppreference.com		  2024.06.10			  std::rand(3)

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

home | help