%PDF- %PDF-
Direktori : /home/silvzytp/crm-dub-code/vendor/fakerphp/faker/src/Faker/Provider/ |
Current File : //home/silvzytp/crm-dub-code/vendor/fakerphp/faker/src/Faker/Provider/Biased.php |
<?php namespace Faker\Provider; class Biased extends Base { /** * Returns a biased integer between $min and $max (both inclusive). * The distribution depends on $function. * * The algorithm creates two doubles, x ∈ [0, 1], y ∈ [0, 1) and checks whether the * return value of $function for x is greater than or equal to y. If this is * the case the number is accepted and x is mapped to the appropriate integer * between $min and $max. Otherwise two new doubles are created until the pair * is accepted. * * @param int $min Minimum value of the generated integers. * @param int $max Maximum value of the generated integers. * @param callable $function A function mapping x ∈ [0, 1] onto a double ∈ [0, 1] * * @return int An integer between $min and $max. */ public function biasedNumberBetween($min = 0, $max = 100, $function = 'sqrt') { do { $x = mt_rand() / mt_getrandmax(); $y = mt_rand() / (mt_getrandmax() + 1); } while (call_user_func($function, $x) < $y); return (int) floor($x * ($max - $min + 1) + $min); } /** * 'unbiased' creates an unbiased distribution by giving * each value the same value of one. * * @return int */ protected static function unbiased() { return 1; } /** * 'linearLow' favors lower numbers. The probability decreases * in a linear fashion. * * @return int */ protected static function linearLow($x) { return 1 - $x; } /** * 'linearHigh' favors higher numbers. The probability increases * in a linear fashion. * * @return int */ protected static function linearHigh($x) { return $x; } }