几种生成随机数方法

前言

本文摘自 PHP 经典实例

解决方案

在 $lower 和 $upper 之间生成随机数,包括 $lower 和 $upper

$lower = 65;
$upper = 95;
mt_rand( $lower,$upper )

在性能方面, mt_rand() 比 rand() 快大概四倍。

应用场景

如果想在页面上显示一个随机的图片,随机设定游戏的开始位置,从数据库选择一个随机的记录的时候,或者生成唯一的一个会话标识字符。
mt_rand() 如果不传入参数,默认生成 0 到最大随机数之间的一个数,最大的随机数由 mt_getrandmax() 返回。

生成偏随机数

生成随机数,但又希望希望生成的随机数有些偏向性,使某个范围内的数出现的频率高于其他的数。

    $numbers = [1,2,3,4,5,6];
    $total = 0;
    foreach($numbers as $k => $v){
        $total += $v;
        $dis[$k] = $total;
    }
    // $total = 21
    // $dis = [ 1 => 1, 2 => 3, 3 => 6, 4 => 10, 5 => 15, 6 => 21 ];
    $rand = mt_rand( 0,$total-1 );
    foreach($dis as $k => $v){
        if($rand > $v){
            echo $k;
        }
    }

上面的函数的 $numbers 数组中的前几个数字出现的频率远大于后面出现的频率。
这种随机选择可以用于广告的投放,将某个广告列表,列表中为广告和剩余投放次数的键值对。将数组排序后,会优先投放前面的广告,从而平衡广告投放,当然这当中的原理还复杂,不是简单的随机数就能解决的。

php

为什么我可以这么的菜?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!