js基础--测试随机数的概率是否相等

欢迎访问我的个人博客:http://www.xiaolongwu.cn

前言

今天我们来做一个有趣的测试,那就是我们在某个范围之间取随机数时,每项被随机到的概率是否相等。

随机方法

我们都知道Math.random()的结果是[0, 1)之间的小数,结果包括0但是不包括1。

那么很简单就会想到Math.random() * n的结果是[0, n)之间的小数,结果包括0但是不包括n。

那么parseInt(Math.random() * n)的结果就是[0, n)之间的正整数, parseInt(Math.random() * n + 1)的结果就是[1, n+1)之间的正整数。

那么parseInt(Math.random() * (m - n) + n)的结果就是[n, m)之间的正整数。

开始证明

我们首先写一个方法,随机7500个在a和b之间的数。

function randomArr(a, b) {
    var obj = {}
    for (let i = 0; i < 7500; i++) {
      const n = parseInt(Math.random() * (b - a) + a);
      if (!obj[n]) {
        obj[n] = 1;
      } else {
        obj[n] ++;
      }
    }
    console.log(obj)
}
  
  randomArr(5, 10)
  randomArr(5, 15)
  randomArr(5, 20)

结果如下:

测试结果

由此,我们大致能得出结论,随机数的每项概率基本是相等的;

github资源地址:js基础–测试随机数的概率是否相等

我的CSDN博客地址:https://blog.csdn.net/wxl1555

如果您对我的博客内容有疑惑或质疑的地方,请在下方评论区留言,或邮件给我,共同学习进步。

邮箱:wuxiaolong802@163.com

NIST SP-800-90B是由美国国家标准与技术研究院(NIST)发布的一项测试标准,用于评估生成的随机数序列的质量。该标准主要包含四个测试方法:熵测试、比特偏倚测试、重叠测试和掩码测试。 熵测试是用来评估随机数生成器生成的随机数序列的“混乱程度”。这个测试会检查序列中的每个元素出现的概率,如果概率分布均匀,就认为生成的随机数序列有较高的熵。 比特偏倚测试用于检测生成的随机数序列中比特位0和1的分布是否接近均匀。如果比特位的分布没有明显的偏向,就认为生成的随机数序列通过了比特偏倚测试。 重叠测试是通过检测生成的随机数序列中是否存在子序列的重复来评估生成器的性能。如果生成的序列中不存在重叠,就认为生成的随机数序列通过了重叠测试。 掩码测试是一种更严格的测试方法,用于检测生成的随机数序列中是否存在可预测性。该测试会检查序列中是否存在由其他部分推导或预测得出的信息,以评估随机数序列的安全性。 通过以上四个测试方法,NIST SP-800-90B可以评估随机数生成器生成的随机数序列的质量和安全性。这对于保证密码学安全、安全通信和随机事件模拟等领域至关重要。该测试标准的使用可以帮助开发者选择和评估随机数生成器,并确保生成的随机数序列满足需求和安全标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值