php 关于随机数的函数

cedebl8k  于 2022-12-10  发布在  PHP
关注(0)|答案(3)|浏览(164)

如何创建满足以下要求的函数:
1.在模拟过程中生成了多少个不同的数字?
1.从0到50的数字出现的百分比?
1.在模拟过程中多次出现的数字是什么?

function randomDigits($numDigits) {
    $arrayRange = 1000;
    if ($numDigits <= 0) {
        return '';
    } else{
        for($i=0; $i<$arrayRange; $i++){
            echo mt_rand(0, 50) ." ";
        }
    }
}

$maxq = 100;
for ($i = 1; $i <= $maxq; $i++) {
    echo $i . "<br>\n";
    randomDigits($i) . "<br>\n----<br>\n";
}
lndjwyie

lndjwyie1#

如果将生成的所有数字存储到数组中,则可以使用array_count_values()
这将计算数组中多个键值的出现次数(例如,如果数字7出现了12次),并将结果返回到数组中。这仅适用于字符串和整数值。

<?php
    $array = ['a', 'a', 'a', 'a', 'b', 'b', 'c'];
    print_r(array_count_values($array));
?>

以上结果:

Array(
    [a] => 4
    [b] => 2
    [c] => 1
)

从那里,你应该能够轻松地做所有的方法和输出,你希望。
下面是与现有代码的基本集成...

<?php 
    $maxq = 100;
    $returned_array = [];

    for ($i = 1; $i <= $maxq; $i++) {    
        $returned_array = randomDigits($i); // return the generated array 
        
        // merge 'add' the two arrays, like saying i = i +2 or
        // merged_array = merged_array + array
        array_merge($returned_array, $returned_array);
        
        // here you now have one array of 1000 random values
        // print_r($returned_array);
        
        // lets do some math
        print_r(array_count_values($returned_array));
        // this will show how many values were duplicates...
        // e.g
        
        // Array ( 
        // [43] => 25  the number 43 was generated 25 times
        // [25] => 22  the number 25 was generated 22 times
        // [1] => 28   ect...
        
        // you can loop through this array here and see which value was generated several times,
        // format the results nicely, and do all sorts of maths on it as you wish
    }

    function randomDigits($numDigits) {
        $arrayRange = 1000;
        $generated_array = []; // here is an actual array that will store the generated numbers

        if ($numDigits <= 0) {
            return null;
        } else {
            for($i = 0; $i < $arrayRange; $i++) {
                $random = mt_rand(0, 50);
                array_push($generated_array, $random); // add the random value to the array
            }

            // here you have your array of generated numbers
            return $generated_array;
        }
    }
?>
ha5z0ras

ha5z0ras2#

此处示例-http://codepad.org/9Dv1CwR7
序列生成包含给定长度的随机整数

function generate_array($count, $min, $max) {
    $arr = array();
    for ($i=0; $i<$count; $i++) {
        $arr[$i] = rand($min, $max);
    }
    return $arr;
}

计算给定间隔的百分比(使用帮助函数):

function cnt($element, $arr){

    $cnt = array_count_values($arr);
    return $cnt[$element];
}

function percentages($min, $max, $arr) {

    $total = sizeof($arr);
    $occurences = 0;
    while ($min < $max) {
        if (!array_key_exists($min, $arr)) {
            continue;
        } else { 
            $occurences = $occurences + cnt($min, $arr); 
        }
        $min++; 
    }
    return $occurences/$total;  
}
rt4zxlrg

rt4zxlrg3#

将所有模拟值添加到数组中,并使用array_count_values获取所有唯一值。

function randomDigits($numDigits) {
        $arrayRange = 1000;
        if ($numDigits <= 0) {
            return '';
        } else{
          $arr=array();
            for($i=0; $i<$arrayRange; $i++){
                $val=mt_rand(0, 50);
                $arr[]=$val;
                echo $val ." ";
            }

            echo "\n";
            $arr=array_count_values($arr);
            echo "Total Unique numbers:".count($arr);
        }

    }
    $maxq = 100;
    for ($i = 1; $i <= $maxq; $i++) {
        randomDigits($i) . "<br>\n----<br>\n";
    }

相关问题