巧用 MD5 实现固定随机数

栏目: 编程工具 · 发布时间: 6年前

内容简介:又要随机又要固定?这是几个意思。比如说,手里有一堆数据,要求各对应一个随机数,我又懒得去存这个随机数,那就要求随机数可计算却分布无规律(伪随机)这也就是个思路分享,使用 sha1 什么的类似编码方案应该都可以得到这样的效果哦。

前言

又要随机又要固定?这是几个意思。

比如说,手里有一堆数据,要求各对应一个随机数,我又懒得去存这个随机数,那就要求随机数可计算却分布无规律(伪随机)

笨办法

  • 指定字符串的 md5 值是唯一的。
  • 不同字符串的 md5 值之间是无规律的。
  • 所以,给一个种子字符串,从其 md5 值里取出的数字,就是确定又无规律的。
  • 这就是固定随机数的基本逻辑啦。

代码

<?php 
/**
 * 固定随机数
 * @param  string|intval $seed 初始化种子
 * @param  intval        $count  复杂度
 * @param  intval        $min  随机数最小值
 * @param  intval        $max  随机数最大值
 * @return intval              最后剩余的天数
 */
function randRemind($seed,$count,$min,$max)
{
    $seed = md5($seed);
    while ($count>0)
    {
        $count --;
        $seed = md5($seed);
    }
    $rand = intval(preg_replace('/.*?(\d).*?(\d).*/','$1$2',$seed));
    return $min + intval(($max - $min) * $rand / 99);
}

echo randRemind('oBQsq7IckIGr',1,1,100),"<br/>";
echo randRemind('KLzlOmuuCKUv',102,1,100),"<br/>";

这也就是个思路分享,使用 sha1 什么的类似编码方案应该都可以得到这样的效果哦。

顺着这个思路,只要初始种子唯一,可以生成一系列的随机数,用来作随机战斗脚本什么的,也能这么玩。

说来说去啊,就是懒得存变量,可以这么干。

后语

最近一个月的事儿有点多,比如换了工作什么的,所以,后面更新博客的频率会下降。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

降维攻击

降维攻击

高德 / 世界图书出版公司 / 2016-3-31 / 39.80元

本书优势: 第一,降维攻击是一个刚开始流行的商业概念,未来随着电影《三体》的上映,这个概念会更加流行,会成为一个全社会的讨论热点。推出这本书,正好借势营销,是一个热点窗口,同时这个概念的商业价值,又符合了时下市场的需求。 第二,这本书的案例和分析,立足于本土,因为降维攻击的思维,很好地表现了国内许多互联网企业崛起的过程,百度,阿里、腾讯、京东等电商的崛起历程都充满了降维的智慧,对于目前......一起来看看 《降维攻击》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器