help with exponents

Started by
4 comments, last by AngleWyrm 13 years, 6 months ago
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!

Advertisement
What's happening when you run the code the way you've presently got it?

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

number =(rand()% static_cast<int>(pow(10,digits))) + 1;

?
--Amir
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!
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
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.
--"I'm not at home right now, but" = lights on, but no ones home

This topic is closed to new replies.

Advertisement