1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liasica-yii2-helpers

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Random.php 2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
liasica Отправлено 02.10.2016 17:40 1cf9444
<?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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/liasica-yii2-helpers.git
git@api.gitlife.ru:oschina-mirror/liasica-yii2-helpers.git
oschina-mirror
liasica-yii2-helpers
liasica-yii2-helpers
master