rand
function
<cstdlib>
int rand ( void );
Generate random number
Returns a pseudo-random integral number in the range 0 to RAND_MAX.
This number is generated by an algorithm that returns a sequence of apparently non-related numbers each time it is called. This algorithm uses a seed to generate the series, which should be initialized to some distinctive value using srand.
RAND_MAX is a constant defined in <cstdlib>. Its default value may vary between implementations but it is granted to be at least 32767.
A typical way to generate pseudo-random numbers in a determined range using rand is to use the modulo of the returned value by the range span and add the initial value of the range:
( value % 100 ) is in the range 0 to 99
( value % 100 + 1 ) is in the range 1 to 100
( value % 30 + 1985 ) is in the range 1985 to 2014
Notice though that this modulo(以…为模)operation does not generate a truly uniformly distributed random number in the span(跨度,跨距,范围) (since in most cases lower numbers are slightly (些微地,轻微地;纤细地)more likely), but it is generally a good approximation (接近;近似值;近似法)for short spans.
Parameters
(none)
Return Value
An integer value between 0 and RAND_MAX.
Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* rand example: guess the number */#include <stdio.h>#include <stdlib.h>#include <time.h>int main (){int iSecret, iGuess;/* initialize random seed: */srand ( time(NULL) );/* generate secret number: */iSecret = rand() % 10 + 1;do { printf ("Guess the number (1 to 10): "); scanf ("%d",&iGuess); if (iSecret<iGuess) puts ("The secret number is lower"); else if (iSecret>iGuess) puts ("The secret number is higher");} while (iSecret!=iGuess);puts ("Congratulations!");return 0;}
Output:
Guess the number (1 to 10): 5 The secret number is higherGuess the number (1 to 10): 8 The secret number is lowerGuess the number (1 to 10): 7 Congratulations!
In this example, the random seed is initialized to a value representing the second in which the program is executed (time is defined in the header <ctime>). This way to initialize the seed is generally a good enough option for most randoming needs.