> 电脑数码
如何获取一个随机数(随机抽取方法)
导语:面试题积累Day1:如何获取一个随机布尔值
我们都知道借助我们常用的一个函数 Math.random() 是能够返回一个0 - 1 的随机数的,那就着这个我们就能很容易地写出一个返回随机布尔值的函数
function randomBoolean(){ return Math.random() >= 0.5}
但是这里值得注意的有一个点:这样的概率真的是无法预测吗?
答案是 否。
那这个事我们要从我们随机数的产生开始说起。
随机数?呸!只是伪随机
文章很复杂,有兴趣就自己去了解下,有兴趣就自己去搜索V8的伪随机数进行学习。
那他主要的意思就是V8中是按照某个文件随机地去生成一批随机数按索引进行读取的,如果说我们用完上一组的随机数但是下一组随机数还没有接上时,随机数是有可能发生重复的。因此这只是一个伪随机数,MDN上也明确规定了,这个随机数是不能用于安全用途的。
除此之外,Random生成的数字是会跳数字的,他没有办法生成所有的值,这就和IEEE的浮点数的表示有关,有兴趣的也自己去搜索一下。
想要真正的随机
我们可以通过一个无法预测的现实生活中的数字来作为我们随机数生成种子,比如当天的上证指数,当天某地的准确温度,某地的大气噪音指数等,否则算法生成的随机从一定意义来说都是伪随机数,只是说能够预测的难度以及范围不同。
本文内容由小鸣整理编辑!