PDA

View Full Version : PHP: Have a 1/2 chance to add or subtract 1 ..?


Quillink
01-30-2010, 01:37 AM
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:


// $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
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:

// $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:

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
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!