0

I need to generate a random amount of numbers between 10 to 15. Also, I need to make those random numbers between 20 to 50. I have the second part done I think, I just don't know what to put into my if statement condition. Anyone know? Here's my code thus far:

#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
srand((unsigned)time(0));
int random_integer; // Stores random number between 20 and 50
int random_set; // Stores random amount of numbers
for(){ //
    random_integer = 20 + rand()%25; // Random number between 20 and 50

    cout <<"Generating " << random_set << "random numbers" << random_set " (is a random number between 10 to 15).";
    cout << random_integer <<", ";
    }

    return 0;
}
F-15
  • 17
  • 7
  • Is this your answer ->>> `output = min + (rand() % (int)(max - min + 1))` then it is a duplicate http://stackoverflow.com/questions/5008804/generating-random-integer-from-a-range – Khalil Khalaf Jul 07 '16 at 19:51

3 Answers3

1

Whilst the other answers have covered how to do this using rand(), the better (and proper) way to generate random numbers in C++ (assuming you have a C++11 or above compiler, which you should have) is via the <random> header.

Here is how to generate random ints in a given range:

#include <random>
#include <iostream>

int main(void) {
    std::random_device rd; // seed for PRNG
    std::mt19937 mt_eng(rd()); // mersenne-twister engine initialised with seed
    const int range_min = 10; // min of random interval
    const int range_max = 15; // max of random interval
    // uniform distribution for generating random integers in given range
    std::uniform_int_distribution<> dist(range_min, range_max);

    const int n = 10; // number of random int's to generate
    // call dist(mt_eng) to generate a random int
    for (int i = 0; i < n; ++i)
        std::cout << dist(mt_eng) << ' ';
}

And, of course, you can randomise the value of n trivially via similar code to the above as well.

sjrowlinson
  • 3,297
  • 1
  • 18
  • 35
0

First of all, this generates numbers from 20 to 45 (exclusive):

random_integer = 20 + rand () % 25;

To fix it, use rand () % 30.

I need to generate a random amount of numbers between 10 to 15

Then generate a random number between 10 and 15 and iterate (with a loop) from 0 to that number:

int n = 10 + rand () % 5;
int *numbers = new int[n]; //array that stores the random numbers
for (int i = 0; i < n; i++)
    numbers[i] = 20 + rand () % 30; //random number between 20 and 50
Mattia F.
  • 1,720
  • 11
  • 21
0

The key is your modulo-ing number and your starting number.

// rand() % 5 + 10 has a range of 10 to 10+5 (15)
// rand() % 30 + 20 has a range of 20 to 20+30 (50)
int numberCount = rand() % 5 + 10;
for(int i = 0; i < numberCount; ++i)
{
    int randomNumber = rand() % 30 + 20;
    cout << randomNumber << endl;
}

If you want inclusive, use 6 and 31 instead of 5 and 30.

rhowen4
  • 1
  • 3
  • I am getting some weird numbers. Here is what I am trying to do:Generating 11 random numbers (11 is a random number between 10 to 15)... ...11 Random Numbers between 20 to 50: 26, 23, 48, 32, 44, 21, 32, 20, 49, 48, 34 – F-15 Jul 07 '16 at 20:42
  • What are the weird numbers you're getting? – rhowen4 Jul 07 '16 at 21:07