+ 1
rand() function
When I use rand function to generate numbers between two numbers but one of them isn't 1, this results in generating numbers out of my range, can anyone explain this to me please?
7 ответов
+ 12
I tried your code and using 5+(rand()%6) works, I'll find out why soon😉
+ 11
I looked for the answer and found this on stack overflow: http://stackoverflow.com/questions/12657962/how-do-i-generate-a-random-number-between-two-variables-that-i-have-stored
Basically
int randNum = rand()%(max-min + 1) + min;
so 5+(rand()%(10-5+1))
That's why six worked (I just try with smaller numbers until it worked )XD
+ 9
what's your code?
+ 3
#include <iostream>
#include <random>
#include <ctime>
using namespace std;
int main() {
srand(time(0));
int min, max;
cin >> min >> max;
int a, b;
do {
a = rand() % (max - min + 1 ) + min);
b = rand() % (max - min + 1 ) + min);
} while(a != 1 || b != 1);
cout << a << ' ' << b;
}
If you want to learn about your errors, post your code.
+ 2
Begin by seeding a random value , by using srand () function .
Then use the current time in second by passing time (0) as an argument in the srand () function to obtain different value each time the program is executed :
srand ( time ( 0 )) ;
Finally use the modulus operator to setup a range of value :
outcome = 1 + ( rand () % 6 ) ; // This will generate values between 1 - 6
Note : Add one the expression to avoid obtaining zero's and include the cstdlib header file.
+ 2
Thnak you all guys, I guess the exact right answer for this question is the following syntax:
rand()%(max - min + 1) + min
thanks Elizabeth Espindola☺
0
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
for ( int i=0; i <10; i++)
cout<<5+(rand()%10)<<endl;
system ("pause");
return 0;
}
/*
outputs:
13
7
15
5
5
13
7
15
7
5
*/