几种生成随机数方法
4

前言

本文摘自 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

为什么我可以这么的菜?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!