954,561 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Why is it dividing when no division operator is being used?

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

Orbit2007
Newbie Poster
9 posts since Feb 2008
Reputation Points: 10
Solved Threads: 1
 

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

Shanti C
Posting Virtuoso
1,642 posts since Jul 2008
Reputation Points: 137
Solved Threads: 162
 

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.

vicky_rawat
Junior Poster
137 posts since Jun 2008
Reputation Points: 28
Solved Threads: 19
 

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
Newbie Poster
9 posts since Feb 2008
Reputation Points: 10
Solved Threads: 1
 

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

Orbit2007
Newbie Poster
9 posts since Feb 2008
Reputation Points: 10
Solved Threads: 1
 

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

Auzzie
Junior Poster
122 posts since Nov 2007
Reputation Points: 16
Solved Threads: 16
 

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.

johnsquibb
Junior Poster in Training
84 posts since Nov 2007
Reputation Points: 14
Solved Threads: 14
 

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.

Orbit2007
Newbie Poster
9 posts since Feb 2008
Reputation Points: 10
Solved Threads: 1
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You