示例#1
0
function heapsort($N)
{
    $ary = array(0);
    for ($i = 1; $i <= $N; $i++) {
        $ary[$i] = gen_random(1);
    }
    heapsort_r($N, $ary);
}
示例#2
0
function selectRandom(&$a)
{
    $r = gen_random(1);
    $hi = sizeof($a);
    for ($i = 0; $i < $hi; $i++) {
        if ($r < $a[$i][1]) {
            return $a[$i][0];
        }
    }
    return $a[$hi - 1][0];
}
示例#3
0
function heapsort($N)
{
    global $LAST;
    define("IM", 139968);
    define("IA", 3877);
    define("IC", 29573);
    $LAST = 42;
    for ($i = 1; $i <= $N; $i++) {
        $ary[$i] = gen_random(1);
    }
    heapsort_r($N, $ary);
    printf("%.10f\n", $ary[$N]);
}
示例#4
0
function makeRandomFasta(&$genelist, $n)
{
    $width = 60;
    $lines = (int) ($n / $width);
    $pick = str_repeat('?', $width) . "\n";
    $randoms = array_fill(0, $width, 0.0);
    global $last;
    // full lines
    for ($i = 0; $i < $lines; ++$i) {
        gen_random($last, $randoms);
        $j = 0;
        foreach ($randoms as $r) {
            foreach ($genelist as $k => $v) {
                if ($r < $v) {
                    break;
                }
            }
            $pick[$j++] = $k;
        }
        echo $pick;
    }
    // last, partial line
    $w = $n % $width;
    if ($w !== 0) {
        $randoms = array_fill(0, $w, 0.0);
        gen_random($last, $randoms);
        $j = 0;
        foreach ($randoms as $r) {
            foreach ($genelist as $k => $v) {
                if ($r < $v) {
                    break;
                }
            }
            $pick[$j++] = $k;
        }
        $pick[$w] = "\n";
        echo substr($pick, 0, $w + 1);
    }
}
示例#5
0
<?php

/*
 $Id: random.php,v 1.2 2004/04/21 14:23:45 tim Exp $
 http://www.bagley.org/~doug/shootout/
 tweaked by tim
*/
define("IM", 139968);
define("IA", 3877);
define("IC", 29573);
$LAST = 42;
function gen_random($max)
{
    global $LAST;
    return $max * ($LAST = ($LAST * IA + IC) % IM) / IM;
}
$N = 1000000;
while ($N--) {
    gen_random(100.0);
}
printf("%.9f\n", gen_random(100.0));
示例#6
0
                $ra[1] = $rra;
                return;
            }
        }
        $i = $l;
        $j = $l << 1;
        while ($j <= $ir) {
            if ($j < $ir && $ra[$j] < $ra[$j + 1]) {
                $j++;
            }
            if ($rra < $ra[$j]) {
                $ra[$i] = $ra[$j];
                $j += $i = $j;
            } else {
                $j = $ir + 1;
            }
        }
        $ra[$i] = $rra;
    }
}
$N = $argc == 2 ? $argv[1] : 10000;
for ($i = 1; $i <= $N; $i++) {
    $ary[$i] = gen_random(1);
}
/*
for ($i=0; $i<$N; $i++) {
    printf("%4d %.15f\n", $i, $ary[$i]);
}
*/
heapsort($N, $ary);
printf("%.10f\n", $ary[$N]);
示例#7
0
<?php

// Taken from the Zend benchmark. Shredding should take care of the compound assignment
define("IM", 139968);
define("IA", 3877);
define("IC", 29573);
$LAST = 42;
function gen_random($n)
{
    global $LAST;
    return $n * ($LAST = ($LAST * IA + IC) % IM) / IM;
}
for ($i = 0; $i < 20; $i++) {
    $x = gen_random($i);
    echo "{$x}\n";
}
function makeRandomFasta3(&$genelist, $n)
{
    $width = 60;
    $lines = (int) ($n / $width);
    $pick = "";
    $randoms = array_fill(0, $width, 0.0);
    global $last;
    // full lines
    for ($i = 0; $i < $lines; ++$i) {
        $pick = "";
        gen_random($last, $randoms);
        $j = 0;
        foreach ($randoms as $r) {
            $pick .= $genelist[(int) ($r * 100)];
        }
        echo $pick . "\n";
    }
    // last, partial line
    $w = $n % $width;
    if ($w !== 0) {
        $pick = "";
        $randoms = array_fill(0, $w, 0.0);
        gen_random($last, $randoms);
        $j = 0;
        foreach ($randoms as $r) {
            $pick .= $genelist[(int) ($r * 100)];
        }
        echo $pick . "\n";
    }
}