The basics of programming in c++ for beginners

rand() – a random number generator in C ++

генератор случайных чиселIt is not always necessary to fill the numericalone-dimensional and two-dimensional arrays serial numbers or specific values. Perhaps, you will need to fill the elements of the array with random numbers.  In C ++, there are special fynktsii rand() and srand().

They are in bibliotechnom file cstdlib, so that their use in the program, you need to connect this library file: #include <cstdlib>   or #include <stdlib.h>  (for older compilers).  

If we use only functionrand()  – will receive the same “random numbers” from run to run. Enter the following code and compile the program several times. Note, what “random numbers” there will always be the same.

A random number is generated in a string 11 and recorded in i-th element of the arrayrandomDigits. In the next string, ask him to show. Starting the program will see each time Only overnight and same numbers:

генератор случайных чисел C++, rand c++, srand c++It turns out, that the numbers are generated is not entirely random. In order to achieve “present” random number at restartx program, you must apply the function srand() to function rand(). Thus it is necessary to pass it as a parameter function time() with a parameter NULL:   srand(time(NULL));  (parameter or function argument – It `s that, that is written in the parentheses after the function name. When we consider the theme Functions in C ++, talk about this more in detail). In this way srand()  It receives as a parameter the current system time, which will be different for each program starting. This will function rand() each time it is to generate random numbers. For use time()  you must connect the library file ctime (time.h for older compilers):  #include <ctime> .

Try to run. You make sure, now generated different number at each compilation. I have turned this result:

rand c++, srand c++, генератор случайных чисел
The first compilation

 

rand c++, srand c++, генератор случайных чисел
The second compilation

All looks good. Only there is one point: range of random numbers, that are generated in such a way –  from 0 to32767You may need to fill in an array of numbers 200 to 300, from 0.1 to 1, from -20 to 20. This random number generation is possible and easy to implement. Let's look at a few example cases:

In the first the for loop random number generation happens certain ranges and their entry in the appropriate arrays.  In each step of the cycle will generate new random numbers. Perhaps someone is difficult to understand how it happens. Let us consider in detail:

rand() % 7  – rand() it generates a number of further evaluated remainder of the division at 7 of that number. Clear, it may be of only From 0 to 6. For example generated 50 – the remainder of the division by 7 is equal to 1, generated 49 – the remainder of the division by 7 is equal to 0.

1 + rand() % 7  – very similar to the previous case, only 0 we will not see, and here 7 It will be in the range. eg generated 49 – the remainder of the division by 7 is 0 and adds one to it, generated 6 – the remainder of the division by 7 is 6 and again added unit.

200 + rand() % 101  – give us a number from 200 to 300. For example generated 100 – the remainder of the division by 101 is 100 and added 200. We get the number of 300. Is generated 202: 200 + (202 % 101)= 200 + 0 = 200.

rand() % 41 - 20  – from the – 20 to 20. For example generated 1: (1 % 40) – 20 = 1 – 20 = -19; generated 30: 30 – 20 = 10.

0.01 * (rand() % 101)  – from the 0.01 to 1. For example generated 55:  0.01* 55 = 0.55.

Result:

rand c  , srand c  , a random number generator C ++

To practice, try to solve the problem: a computer“thinks of” number from 1 to 7, a user has to guess it. If it does not work out – see our variant solutions:

Compile:
rand c++, srand c++, генератор случайных чисел C++

Tasks with rand() there is an article Tasks: Arrays in C++. Take some time and watch the video:

64 thoughts on “rand() – a random number generator in C ++

    1. Just write down the variables and add. That's the whole task. In simple words. Need rand() was written to a variable.

  1. How to generate an array ,so that it only outputs numbers , which are divided into 6.
    For example, an array is output, and in it numbers : ” 0,12,6,36,0,18,36,48,42,12,…. ” ?

    1. can I write when?
      randomDigit = 1 + rand() % 7;
      write not = 1 + rand() % 7;
      a = 1 + rand() % 6;
      and so it will be through 6
      (I think so)

  2. if (“variable”%6==0)
    for (int i=0;i<n;i )
    I think right) you will figure it out with the conclusion)

  3. And how to make an array with autocomplete numbers beyond the specified limits and which finds pairs of numbers, which are exactly the same, differ only by + signs-
    the very condition I have :
    if (With[i]== - Ar[i])
    j;
    here's how to link it to an array, I do not know

  4. How to do so, so that the maximum and minimum number, which can be set to an array was entered by the user?

Leave a Reply

Your email address will not be published. Required fields are marked *