false, 'start' => 0, 'end' => 0.01, ]))['value']; $option = \json_decode($option); if ($option->start >= $total_price) { return [ 'is_open' => false, 'rand' => 0, ]; } $end = $option->end; if ($end >= $total_price) { $end = $total_price - 0.01; } $rand = static::randomFloat($option->start, $end); return [ 'is_open' => $option->is_open, 'rand' => $rand, ]; } public static function randomFloat($min = 0, $max = 0.01) { $num = $min + \mt_rand() / \mt_getrandmax() * ($max - $min); return \sprintf("%.2f", $num); } }