handybitesize/distributed-random

从一定范围内生成具有正态分布的随机数。允许偏斜和舍入。

0.2 2018-08-28 09:31 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:21:14 UTC


README

PHP的正态分布随机值

DistributedRandom 允许您在指定范围内生成随机值,强制执行正态分布,而不是像 rand() 等函数提供的均匀分布。

免责声明。这不一定真的是数学。我在生成测试随机对象时使用它。例如,如果我想要生成2000个用户,属于4个用户权限组中的一个,如果我对用户权限组_id进行随机化,我预计每个组将有大约500个用户。然而,我通常希望大多数生成的用户属于权限较低的组,只有少数“管理员”被创建。这个库通过向低端偏斜的随机化来让您实现这一点。

您可以在演示脚本中查看分布类型

php -S localhost:8080 demo/web.php 

设置

将库添加到项目的 composer.json 文件中

{
  "require": {
      "handybitesize/distributed-random": "0.*"
  }
}

使用 composer 安装库

$ php composer.phar install

Composer 会将 DistributedRandom 安装到您的 vendor 文件夹中。然后您可以将以下内容添加到您的 .php 文件中,以使用库并启用自动加载。

require_once(__DIR__ . '/vendor/autoload.php');

或者,使用命令行中的 composer 来要求并安装 DistributedRandom

$ php composer.phar require handybitesize/distributed-random:0.*

最低要求

  • PHP 5.3

用法

use HandyBiteSize\DistributedRandom\GenerateRandom;

//examples here


$randomise = new GenerateRandom();

//random double between 0 and 1 distributed around 0.5
$rand = $randomise->random();

//Array of 10 randon doubles between 0 and 1 distributed around 0.5
$rand = $randomise->randomArray(10);

//eg
//[0.50398172239527, 0.55248558880547, 0.25614964553752, 0.80148380196869, 0.58439718574973,
// 0.48014020914308, 0.73432188492932, 0.58615275804089, 0.34302056021055, 0.41324347746747]



//random double between 10 and 100 distributed around 10 and rounded to nearest 10
$rand = $randomise->random(10, 100, 10, 10);

// array of 10 as above
$rand = $randomise->randomArray(10, 10, 100, 10, 10);

// eg
// [10, 30, 20, 20, 20, 10, 10, 50, 20, 20]

单元测试

待续!

$ cd tests
$ phpunit

许可证

MIT 许可证下授权。