Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Questions and Supports (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=18)
-   -   PHP: Have a 1/2 chance to add or subtract 1 ..? (http://www.mysidiaadoptables.com/forum/showthread.php?t=1292)

Quillink 01-30-2010 01:37 AM

PHP: Have a 1/2 chance to add or subtract 1 ..?
 
I'm trying to create a code that will take an existing number (from a table) and have a one-in-two chance of adding or subtracting one from it.
This is what I have at the moment:

Code:

// $numnew = new number
// $curnum = current number
// $max = upper limit (5 in this case)

if (rand(1,2) == 1) {
$numnew = ($curnum + rand(-1,1));
}

if ($numnew == 0) {
$numnew = $max;
}

if ($numnew > $max) {
$numnew = 1;
}

I've been trying to figure how to do this all day. This code works... kind of.
It tends to favor staying at either 1 or 5. I heard that the rand() function isn't truly random, so I guess this is what they meant. Is there any workaround?
Also, the number will occasionally and unexplainably jump to 5 no matter what $curnum was. :(

If anyone can help make this work (or better, show me how to write it better from scratch) I'd very much appreciate it. :D


EDIT: Should I be posting these random php questions in the Webmaster Bat Cave, Brandon? I just figured since they apply to my adoptable site they belonged here. :S

BMR777 01-30-2010 03:12 PM

RE: PHP: Have a 1/2 chance to add or subtract 1 ..?
 
The rand() function isn't truly random. I don't know why it isn't working, but I'll think about it and let you know if I come up with any ideas.

Plague 04-13-2011 12:07 AM

I could be wrong but I think the issue is here:

Code:

// $numnew = new number
// $curnum = current number
// $max = upper limit (5 in this case)

if (rand(1,2) == 1) {
$numnew = ($curnum + rand(-1,1));
}

if ($numnew == 0) {
$numnew = $max;
}

if ($numnew > $max) {
$numnew = 1;
}

I think maybe setting it like this:

Code:

if (rand(0,4) == 1) {
That might rectify the issue.

AlexC 04-13-2011 07:49 AM

this thread is over a year old, the post date is January 2010. I believe (like most forums) that you aren't suppose to bump old threads.

fadillzzz 04-13-2011 09:08 AM

Quote:

Originally Posted by Gloometh (Post 16154)
this thread is over a year old, the post date is January 2010. I believe (like most forums) that you aren't suppose to bump old threads.

You took the words right out of my mouth :jay:

Closed!


All times are GMT -5. The time now is 11:02 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.