Php 任意数量项目的随机分布

Php 任意数量项目的随机分布,php,random,distribution,normal-distribution,Php,Random,Distribution,Normal Distribution,我需要一个PHP函数,它可以在任意数量的省道板上随机分布任意数量的省道。它必须返回有0个省道的省道板的数量,有1个省道、2个省道的省道板的数量等 我必须能够在几毫秒内用数百万个省道和省道板来运行它,但近似值已经足够好了。我已经有了一个函数,可以给我一个正态分布的随机值,这样就可以使用一个给出平均结果的解决方案 //Example result with 1000 darts and 500 dartboards Array ( [0] => 62 [1] => 128

我需要一个PHP函数,它可以在任意数量的省道板上随机分布任意数量的省道。它必须返回有0个省道的省道板的数量,有1个省道、2个省道的省道板的数量等

我必须能够在几毫秒内用数百万个省道和省道板来运行它,但近似值已经足够好了。我已经有了一个函数,可以给我一个正态分布的随机值,这样就可以使用一个给出平均结果的解决方案

//Example result with 1000 darts and 500 dartboards
Array
(
    [0] => 62
    [1] => 128
    [2] => 152
    [3] => 96
    [4] => 40
    [5] => 14
    [6] => 6
    [7] => 2
)
我制作了一个函数,通过随机地按程序分配每个省道来生成示例值。这仅用于示例目的。函数的生产版本必须使用正态分布以可伸缩的方式创建结果

不要告诉我如何优化此示例,其仅用于演示目的:


那么,如果你已经有了一个函数,不想优化它,你的问题是什么?我想要一个使用正态分布来近似结果的函数,因为这样不管它的大小是1镖还是10亿。所以你真正的问题是如何在php中快速生成法线或近似值?不,我已经可以创建法线,我需要的是一种在带有法线的省道板上随机分布省道的方法,而不是程序性迭代。@Danieliesenhard这一点还不清楚。您是否在指定的镖靶上寻找镖靶的位置,或将镖靶分配给镖靶。如果是后者,你为什么会认为省道在省道板上的分布——一个离散过程——会被建模为一个正态分布和一个连续分布?[顺便说一句,如果你想让你回复的人看到你的回复,请在他们的名字前面加上一个@。你会自动看到对你问题的回复,但我们不会看到。]
<?php
function distribute($items, $targets) {
    $result = array();
    $values = array();
    for($i=0; $i<$items; $i++) {
        @$values[ mt_rand(0,$targets) ] ++;
    }
    for($i=0;$i<$targets;$i++) {
        @$result[ (int) $values[$i] ] ++;
    }
    ksort($result);
    return $result;
}

$microtime = microtime(true);

echo '<pre>';

print_r( distribute(100000, 50000) );

print_r(microtime(true) - $microtime);