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 between 0 and RAND_MAX	(0 and
	  RAND_MAX included).

	  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 <iostream>
	#include <ctime>

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

	    // roll 6-sided dice 20 times
	    for	(int n=0; n != 20; ++n)	{
		int x =	7;
		while(x	> 6)
		    x  =  1  +	std::rand()/((RAND_MAX	+  1u)/6);   //	 Note:
       1+rand()%6 is biased
		std::cout << x << ' ';
	    }
	}

Possible output:
	Random value on	[0 2147483647]:	726295113
	6 3 6 2	6 5 6 3	1 1 1 6	6 6 4 1	3 6 4 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)

http://cppreference.com		  2022.07.31			  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.0>

home | help