* @package Vhs * @subpackage ViewHelpers\Random */ class NumberViewHelper extends AbstractViewHelper { /** * @param integer $minimum Minimum number - defaults to 100000 (max is 999999 making lengths uniform with adequate entropy) * @param integer $maximum Maximum number - defaults to 999999 (min is 100000 making lengths uniform with adequate entropy) * @param integer $minimumDecimals Minimum number of also randomized decimal digits to add to number * @param integer $maximumDecimals Maximum number of also randomized decimal digits to add to number * @return float */ public function render($minimum = 100000, $maximum = 999999, $minimumDecimals = 0, $maximumDecimals = 0) { $natural = rand($minimum, $maximum); if (0 === (integer) $minimumDecimals && 0 === (integer) $maximumDecimals) { return $natural; } $decimals = array_fill(0, rand($minimumDecimals, $maximumDecimals), 0); $decimals = array_map(function () { return rand(0, 9); }, $decimals); return floatval($natural . '.' . implode('', $decimals)); } }