2008/11/22 Tontonq Tontonq <[EMAIL PROTECTED]>:
> sorry i think i did tell u wrong about it problem is not showing name
> of it as exaclty i just wanted give a point to it thats not real
> problem real problem is i want it be more unpossible when i give the
> class's add function's higher value

In that case I would go for an algorithm using some kind of gaussian
distribution, like the Marsaglia polar method [1].
I once wrote something similar to what (I think) you are asking for ...

<?php
function marsaglia($likelihood) { // adapted polar-method by marsaglia
    if (!is_numeric($likelihood) || ($likelihood == 0)) $likelihood = 100;
    elseif ($likelihood <= 1) return 1;
    // the greater likelihood, the less the chance of getting the thingy
    $v = 2;
    $u1 = $u2 = 1;
    while ($v > 1) {
        $u1 = 1/(rand(1, $likelihood)*$likelihood);
        $u2 = 1/(rand(1, $likelihood)*$likelihood);

        $v = $u1*$u1 + $u2*$u2;
    }

    $p = $u1*sqrt((-2)*(log($v)/$v));
    return ($p < 0.85) ? 1 : (int)$p;
}
?>

The best return of this function would be 1. Now if you call the
function with a high $likelihood (say 1000 and more) it gets less
likely have 1 returned ( gaussian ).
If you want to decrease the chance of getting values close to 1 then
you will have to increase $likelihood inside the function or
something.

[1] http://en.wikipedia.org/wiki/Marsaglia_polar_method

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Reply via email to