<?php

use Random\Engine;
use Random\Randomizer;



$loops = 1000;
$length = 100;

$r = new Randomizer();

$start = hrtime(true);
    for ($i = 0; $i < $loops; $i++) $r->getBytesFromAlphabet('0123456789', $length);
$end = hrtime(true);
var_dump(($end - $start) / 1e9);

$start = hrtime(true);
    for ($i = 0; $i < $loops; $i++) $r->getBytesFromAlphabetNoOptimization('0123456789', $length);
$end = hrtime(true);
var_dump(($end - $start) / 1e9);

$start = hrtime(true);
    for ($i = 0; $i < 1000; $i++) my_bytes_from_alphabet('0123456789', $length, $r);
$end = hrtime(true);
var_dump(($end - $start) / 1e9);

$r = new Randomizer(new Engine\Xoshiro256StarStar);

$start = hrtime(true);
    for ($i = 0; $i < $loops; $i++) $r->getBytesFromAlphabet('0123456789', $length);
$end = hrtime(true);
var_dump(($end - $start) / 1e9);

$start = hrtime(true);
    for ($i = 0; $i < $loops; $i++) $r->getBytesFromAlphabetNoOptimization('0123456789', $length);
$end = hrtime(true);
var_dump(($end - $start) / 1e9);

$start = hrtime(true);
    for ($i = 0; $i < 1000; $i++) my_bytes_from_alphabet('0123456789', $length, $r);
$end = hrtime(true);
var_dump(($end - $start) / 1e9);

function my_bytes_from_alphabet(string $alphabet, int $n, Randomizer $r): string
{
    $max = \strlen($alphabet) - 1;
    $result = '';


    for ($i = 0; $i < $n; $i++) {
        $result .= $alphabet[$r->getInt(0, $max)];
    }

    return $result;
}
