自己实现随机数

随机数函数rand大家一定都使用得炉火纯青了,但是如何你想自己实现一个rand函数该怎么办呢?这篇文章让我来简单介绍一下随机数的常用生成方法

最近工作太忙,几乎没精力写文章,竟然有人催更,好在这段时间也没人取关,哈哈,那就小更一篇吧。

真假随机数

其实计算机中的随机数都是伪随机数,因为它并不是真正随机的。只有完全无法预测下一次的数字才能算是真正的随机数。相抵比较”真随机”的方法有:通过当前温度+PM2.5+风力…、CPU温度+内存条温度+…。重点在于无法预测,但是这些随机数获取的成本也相对比较大。

线性同余法

大部分语言的随机数都是通过”线性同余法”生成的,这是什么鬼方程(哪位好学生给科普一下)?我们不管原理,只管实现~线性同余法的方程为:N2 = (A X N1 + B) % M,仅当B能够被A与M的最大公约数整除,此方程有解。我们只要保证A和M互质就可以了。

下面是我用PHP的简单实现,如有错误,随便指出:

/** * 伪随机数 * @author zhjx922 */class Rand { private $_sRand; public function __construct() { $this->_sRand = substr(microtime(true), -3); } /** * 种子生成器 * @return string */ private function sRand() { $a = 33773; $b = 97613; $m = 65536; $this->_sRand = bcmod(bcadd(bcmul($a, $this->_sRand), $b), $m); return $this->_sRand; } /** * 查询随机数 * @param $start * @param $end * @return string */ public function rand($start, $end) { if($start == $end) { return $start; } if($start > $end) { $max = $start; $min = $end; } else { $max = $end; $min = $start; } $sub = $max – $min; return (int)bcmod($this->sRand(), $sub + 1) + $min; }}$rand = new Rand();$randNum = array();for($i=0;$irand(-50, -66); if(isset($randNum[$num])) { $randNum[$num]++; } else { $randNum[$num] = 1; }}ksort($randNum);var_dump($randNum);

大家可以复制代码到本地跑一下,看看生成的效果如何,生成的随机数是否足够”随机”

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月27日
下一篇 2022年6月27日

相关推荐

  • 将物质雕刻成复杂形状的简单方法

    在附图中,扭曲的光照射到移动的BEC上,将其分解成BEC液滴簇,这些液滴跟随光的特征移动。来源:斯特拉斯克莱德大学 一种使用“扭曲”光将物质塑造成复杂形状的新方法已经在斯特拉斯克莱…

    2022年8月17日
  • 新生儿体温37.5度,是发烧了吗?

    1、 常正 新生儿 温体 是36.5~ 5.73 之间。 2、 常正 新生儿呼吸 数次 为40~ 06 次/分。 3、正常 儿生新 心律 动波 大,一般为120~ 041 次/分。…

    2022年8月19日
  • 不需要烤箱,不用擀面,自制脆皮鸡蛋松饼,比蛋糕还香

    关注大胖友图图,每天都能看到新奇,简单,美味又实用的食谱哦。 今天我们来做简单的鸡蛋松饼,外皮是脆脆的那种,可以说是外脆里嫩。不需要发面,简单地搅拌就能完成。如果你在早晨比较赶时间…

    2022年8月21日
  • 年纪越大,脸上的斑点越来越多?这4个方法,或能帮您淡化斑点

    随着年龄增长衰老体现在多个方面,有的人腿脚不利索,白头发越来越多,有的人消化能力变差,经常便秘。还有不少人发现脸部的色斑明显,这些斑点,斑块会影响脸部皮肤美观,也是黑色素累积,皮肤…

    2022年8月14日
  • 破解无意识音的最有效方法

    孩子喜欢咿呀学语作为家长不知道怎么教学?别着急,布莱星带您来学习,如何破解无意识音! 破解无意识的发音,就是从发出无意识音开始一步步变成具有功能性的语言! 什么是无意识的音?:我们…

    2022年8月25日
  • 陈小华:以“有温度的服务”坚守初心

    来源:【人民网】 伴随市场需求的递增,传统同城货运市场逐步向规范化发展,如何降低货运风险、提供健全、有保障的服务模式,成为行业探索的课题。 到家集团创始人兼快狗打车董事长陈小华认为…

    2022年7月3日
  • 如果地球自转速度逐渐下降三百年,人类会灭绝吗?生命还存在吗?

    提问:如果地球自转速度逐渐下降三百年,最终下降到只有目前的三十分之一,那地球会怎样变化?还有生命吗? 根据对地球制动条件的不同,生命可能全面灭绝,也可能不会。 我们先来看看地球的动…

    2022年8月16日
  • 3亿公里外,日本隼鸟2号飞船在小行星上“暴力采矿”,碎石横溅

    综述 人类对于宇宙的幻想,从人类诞生之初就一直存在,不管是多么原始的部落,不管人类的智慧是怎么样的,对于星空的仰望一直都没有停下来过。 我国的航天器命名为天问,也是有这层用意。所有…

    2022年8月16日
  • 四行代码秒解微积分!Python 这个模块神了

    SymPy 是一个Python库,专注于符号数学,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。 举一个简单的例子,比如说展开二次方程: from s…

    2022年6月23日
  • 尼尔伪装者轮回的世界怎么刷钱 详细方法介绍

    在游戏中刷钱的方法是很多的,比如钓鱼刷钱法和轮回世界刷钱法,那么尼尔伪装者轮回的世界怎么刷钱呢?还不知道的玩家快来看小编带来的详细方法介绍吧。 详细方法介绍 轮回的世界赚钱的方法适…

    2022年7月26日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息