I. Generating random numbers without a specified range
With the function rand (), the function prototype is int RA
nd (), no parameters. A whole number between 0~rand_max is generated at this time. The size of the Rand_max can be viewed in the Include folder (Linux in the USR directory, windows in the installation directory) Stdlib.h can be seen, Linux under the value of 2147483647 (), the value of the specific system.
Reference code:
Copy Code code as follows:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
For (i=0 i<10; i++)//randomly generates 10 numbers.
{
printf ("%d\n", Rand ());
}
return 0;
}
Two. The specified range produces random numbers, generating 0 to a certain number of random numbers
There are no ready-made functions, but they can be obtained by
Copy Code code as follows:
#include <stdio.h>
#include <stdlib.h>
#define RANDOM (x) (rand ()% x)//Get the random number of the specified range by taking the remainder
int main ()
{
int i;
int dis; Generates a random number between [0, dis), noting that DIS is not included
for (i=0; i<10; i++)
{
printf ("%d\n", Random (dis));
}
return 0;
}
Description: Suppose dis takes 5
Note A problem: each of the above two programs produces the same results, both pseudo random numbers. Rand () produces a random number associated with a specific seed, and when the seed is not deliberately fetched with srand (), the seed defaults to 1, so the Srand () function is required to produce a different seed, Srand function prototype: void Srand (unsigned seed); In order to produce different seed values, time is usually used as the parameter value. For example, for one, the modification procedure is as follows:
Copy Code code as follows:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int i;
Srand ((int) time (NULL)); Generate different random numbers each time the seed is executed differently
for (i=0; i<10; i++)
{
printf ("%d\n", Rand ()); Because execution is too fast, in less than a second, 10 random numbers are interlinked, but each execution is different
}
return 0;
}
Three. The specified range produces random numbers
Requirements: Specified range (m,n), M, n uncertain, random number including M and n
Find ways to change the scope (m,n) to (0,x), and then transfer back to the end. Three kinds of cases
Copy Code code as follows:
1:m=n at this time should not be called random number, here return m
2:m>n:
Mark Pos=n, Distance difference pos=m-n+1
Back to rand ()% dis + pos
3:n>m:
Mark Pos=m, Distance difference =n-m+1
Back to Rand ()%dis + pos
Reference code:
Copy Code code as follows:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Random (int m, int n)
{
int pos, dis;
if (M = = N)
{
return m;
}
else if (M > N)
{
pos = n;
dis = m-n + 1;
Return rand ()% dis + pos;
}
Else
{
pos = m;
dis = n-m + 1;
Return rand ()% dis + pos;
}
}
int main ()
{
int I, M, N;
Srand ((int) time (NULL));
m =-3;
n =-7;
for (i=0; i<10; i++)
{
printf ("%d\n", Random (M, n));
}
return 0;
}
Sublimation
Srand ((unsigned) time (null));
(A,B) (rand ()% (b-a+1)) +a-1
[A,b) (rand ()% (b-a)) +a
(A,b] (rand ()% (b-a)) +a+1
[A,b] (rand ()% (b-a+1)) +a