## Orbit2007

I am trying to build a random number generator based on dice. Yes, I know there are ones out there but I am trying to do this whole programming thing for myself... I thought I had done it right but it keeps telling me "Warning: Division by zero" when I am not using any division, can anyone explain and give me some advice?

``````<?

srand(time());
\$random = (rand()%\$POST_number)+1*\$POST_how+\$POST_str+\$POST_mod;
print("You just rolled a D6 and your roll is: \$random");
?>``````

Forgive me, I am a bit new here so any other info needed I can give you

## Shanti C 106

I think you % symbol is giving you that error..

## vicky_rawat 11

Hi,

Can you please let us know, what is the value in \$POST_number.

as % sign is for getting reminder.
So if \$POST_number will have value 0, then it will give divide by 0 error.

## Orbit2007

The current value is seven...it's just a number I chose. In the end it will be a user created number ranging from 1 to 24

## Orbit2007

Anybody else have any thoughts? I took the percent sign out and can only get 0 for an answer

## Auzzie 6

Try splitting it down into sections see what happens there, and also try replacing rand() with say 5 and see if you still get the error

## johnsquibb 3

the modulus operator (%) takes the left side, divides it by the right side, and returns the remainder. So, 5%3 would result in two, since 5/3 yields a remainder 2.

If you are getting a division by zero error, that means the value on the right side of the equation is 0. Debug the value of your '\$POST_number' variable, your error lies there.

Consider the following for random number generation emulating dice rolls:

``````srand(time());

\$minimum 	= 1;
\$maximum	= 20;

\$roll = rand(\$minimum , \$maximum);

print "You rolled: \$roll";``````

the above creates a min and max and uses the built-in functionality of rand to return the roll.

``````\$range = range(1,20);
shuffle(\$range);
print "You rolled: ".\$range[0];``````

the above does the same as the previous, just with less code. the range function creates an array of numbers starting with the first argument, ending with the last. The above example has created an array of twenty elements , values 1-20. The shuffle function takes that array and randomizes the order of its elements. The nice thing about shuffle, is that it seeds the random number generator automatically (srand function). By printing any element of the array after shuffling (I print the first one here), you get a random number within the range.

## Orbit2007

Thanks! I was able to get it to work! I toyed around with it the last few days and got it to somewhat work. My next problem I am going to post shortly.