Слияние кода завершено, страница обновится автоматически
<?php
/**
* Author: liasica
* CreateTime: 16/1/28 11:10
* Filename: Random.php
* PhpStorm: LiasicaAPI
*/
namespace liasica\helpers;
class Random
{
/**
* 生成随机字符串只包含大小写字母以及数字
* @param string $length 长度
* @param bool $upper 包含大写字母
* @param bool $lower 包含小写字母
* @param null $symbol 其他符号
* @param bool $repeat 是否重复
* @return null|string
*/
public function RandomChars($length, $upper = true, $lower = true, $symbol = null, $repeat = true)
{
$str = null;
$strPol = '0123456789';
$letters = 'abcdefghijklmnopqrstuvwxyz';
$upper == true && $strPol .= strtoupper($letters);
$lower == true && $strPol .= $letters;
$symbol != null && $strPol .= $symbol;
$str_arr = str_split($strPol);
$max = count($str_arr) - 1;
$str = null;
for ($i = 0; $i < $length; $i++) {
$random = mt_rand(0, $max);
$str .= $str_arr[$random];
if (!$repeat) {
unset($str_arr[$random]);
}
}
return $str;
}
/**
* 抽奖概率算法
* @param $proArr
* @eg $proArr (奖项ID => 数量) [1 => 1, 2 => 10, 3 => 40] ...
* @link http://blog.csdn.net/leeyisoft/article/details/8226036
* @return bool|int|string
*/
public function lottery($proArr)
{
$result = false;
// 概率数组的总概率精度
$proSum = array_sum($proArr);
// 当总数大于0的时候, 当等于0的时候始终未中奖
if ($proSum > 0) {
//概率数组循环
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
}
return $result;
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )