Skip to content
This repository was archived by the owner on Oct 5, 2022. It is now read-only.
This repository was archived by the owner on Oct 5, 2022. It is now read-only.

Uh-oh! Random number generator is not pseudorandom™ #130

Open
@multiwebinc

Description

@multiwebinc
$rand  = $this->psl['crypt/rand'];
for ($i=0; $i<10000; $i++) {
  $num = floor($rand->int(0, 1000000) / 1000);
  if (isset($used[$num])) {
    $used[$num]++;
  }
  else {
    $used[$num] = 1;
  }
}
ksort($used);
print_r($used);

Here is the output. As you can see it is pretty much a standard normal distribution curve right in the middle of the range:

Array
(
    [479] => 1
    [480] => 2
    [481] => 1
    [482] => 1
    [483] => 4
    [484] => 11
    [485] => 26
    [486] => 26
    [487] => 63
    [488] => 89
    [489] => 162
    [490] => 225
    [491] => 345
    [492] => 401
    [493] => 509
    [494] => 617
    [495] => 770
    [496] => 792
    [497] => 853
    [498] => 896
    [499] => 830
    [500] => 738
    [501] => 675
    [502] => 489
    [503] => 411
    [504] => 333
    [505] => 253
    [506] => 212
    [507] => 91
    [508] => 73
    [509] => 51
    [510] => 25
    [511] => 12
    [512] => 5
    [513] => 6
    [514] => 1
    [518] => 1
)

Why not just use mt_rand()?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions