随机函数及应用
-
rand
产生一个随机整数echo rand(1, 100); // 生成一个 1-100 之间的随机数
-
uniqid
生成一个唯一IDecho uniqid(); echo uniqid('prefix', true); echo uniqid('', true); /* string uniqid ( [ string $prefix = "" [, bool $more_entropy = false ]] ) 获取一个带前缀、基于当前时间微秒数的唯一ID。 $more_entropy 设置为true 会提高唯一性。 prefix为空,则返回的字符串长度为13。more_entropy 为 TRUE,则返回的字符串长度为23。 */
-
概率计算
// 计算10%的概率 if( rand(1,100) <= 10 ) echo "10%"; // 计算任意概率 $rate = 0.123; // 0-1之间的小数 $max = pow(10, strlen($rate)-2); if( rand(1, $max) <= $rate*$max ) { echo $rate; }
-
生成一个由数字字母组成,指定长度的字符串
$len = 10; $str = ''; for($i = 0; $i < $len; $i++) { $str .= rand(0, 35) < 10 ? chr(rand(48, 57)) : chr(rand(65, 90)); } echo $str; // chr 将一个ASCII码转换为字符串,ASCII 48-57 对应0-9,65-90对应大写A-Z
-
生成一个唯一字符串ID,带服务器IP和用户IP信息
function createUniqid() { $serverIp = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '127.0.0.1'; // 获取服务器IP $userIp = isset($_SERVER['REMOAT_ADDR']) ? $_SERVER['REMOAT_ADDR'] : '127.0.0.1'; // 获取用户端IP // 将IP转换为字符串 $serverIp = base_convert(ip2long($serverIp), 10, 36); $userIp = base_convert(ip2long($userIp), 10, 36); // 生成一个 uniqid,去掉里面的'.',然后用进制转换为字符串 $uniqid = uniqid('', true); $uniqid = base_convert(str_replace('.', '', $uniqid), 16, 36); return $serverIp.'-'.$userIp.'-'.$uniqid; } echo createUniqid();
网友评论