Sign in to follow this  
Bladelock

help with exponents

Recommended Posts

Bladelock    124
how would i use the pow() function for helping me create a random number with its maximum number of digits pre-determined by the user.

my code is like this




#include <iostream>
#include <time.h>
#include <cstdlib>
#include <cmath>
using namespace std;

int main()
{
int digits;
int number;

cout << "insert max number of digits random number will have" << "\n";
cin >> digits

number =(rand()% pow(10,digits))+1;
//* above is the line of code where i'm having issues *//

cout << number;

return 0;

}



how exactly do you use pow here? any help is appreciated. thanks!

Share this post


Link to post
Share on other sites
Mantear    251
Why the '+ 1'?

Suppose you want 2 digits, let's try a few cases:
(12345 % 100) + 1 = 46 - fine
(12300 % 100) + 1 = 1 - is '0' an invalid random number? You'll never get it.
(12399 % 100) + 1 = 100 - too many digits!

Share this post


Link to post
Share on other sites
Bladelock    124
Quote:
Original post by Mantear
Why the '+ 1'?
(12300 % 100) + 1 = 1 - is '0' an invalid random number? You'll never get it.


my intention was to get 1-100, which means, i intended to never get 0 as a random number

Share this post


Link to post
Share on other sites
AngleWyrm    554
A few things:
1). the line "cin >> digits" needs an ending semicolon.
2). the function pow() does not return an int but rand() requires an int, so you need an explicit cast to int; put (rand()%(int)pow(10,digits))+1
3). include the line "srand(time(NULL));" before calling rand() or you'll get the same number every time.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this