内容简介:又要随机又要固定?这是几个意思。比如说,手里有一堆数据,要求各对应一个随机数,我又懒得去存这个随机数,那就要求随机数可计算却分布无规律(伪随机)这也就是个思路分享,使用 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 什么的类似编码方案应该都可以得到这样的效果哦。
顺着这个思路,只要初始种子唯一,可以生成一系列的随机数,用来作随机战斗脚本什么的,也能这么玩。
说来说去啊,就是懒得存变量,可以这么干。
后语
最近一个月的事儿有点多,比如换了工作什么的,所以,后面更新博客的频率会下降。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 高效随机数算法Java实现
- 区块链随机数的实现:墨客随机数子链RandDrop(强随机数和真随机数)_作者陈小虎
- 严重依赖“伪随机数”,让计算机实现真正的随机有多难?
- C++实现产生随机数与相应的猜拳小游戏
- 强随机数应用链链RandDrop已上线——BLS签名实现阈值签名的流程
- Java随机数探秘
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。