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 implementa-
     tion-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 pro-
     duced. 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)

home | help