js控制随机数生成概率代码实例


Posted in Javascript onMarch 21, 2019

基本思路:把Math.random()生成的数看着百分比,然后定义每个整数值取值范围。

具体内容如下,供大家参考

'use strict';
export default class GL {
  /**
   * 构造函数
   * @param {object} opt
   * @param {number} opt.min 最小整数值
   * @param {number} opt.max 最大整数值
   * @param {Map} opt.fenpei 自定义概率 
   */
  constructor({ min, max, fenpei = new Map() }) {
    this.min = min;
    this.max = max;
    this.fenpei = fenpei;
  }

  /**
   * 可分配百分比
   */
  get baifenbi() {
    return (1 - this.peizhi) / (this.max - this.min - this.fenpei.size);
  }

  /**
   * 配置
   */
  get peizhi() {
    let result = 0;
    for (let i of this.fenpei.values()) {
      if (this.min <= i && i < this.max) result += i;
    }
    return result;
  }


  /**
   * 随机数
   * @returns {number} [min,max)
   */
  random() {
    let t = 0, r = Math.random();
    for (let i = this.min; i < this.max; i++) {
      this.fenpei.has(i) ? t += this.fenpei.get(i) : t += this.baifenbi;
      if (t > r) return i;
    }
    return null;
  }
}


let d = new GL({
  min: 0,
  max: 8,
  fenpei: new Map([
    [0, 0.5], // 数值,百分比
    [22, 0.4]
  ])
});

// 测试
let count = Array(10).fill(0);
for (let i = 0; i < 10000; i++) {
  count[d.random()] += 1;

}

for (let i = 0; i < count.length; i++) {
  console.log(count[i] / 10000);
}

以上所述是小编给大家介绍的js控制随机数生成概率代码实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js图片闪动特效可以控制间隔时间如几分钟闪动一下
Aug 12 Javascript
js实现漂浮回顶部按钮实例
May 06 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
Angular2 路由问题修复详解
Mar 01 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 Javascript
vuejs如何配置less
Apr 25 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
玩转Koa之koa-router原理解析
Dec 29 Javascript
socket在egg中的使用实例代码详解
May 30 Javascript
json数据格式常见操作示例
Jun 13 Javascript
js实现点击上传图片并设为模糊背景
Aug 02 Javascript
微信小程序实现文件预览
Oct 22 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
Mar 21 #Javascript
详解基于React.js和Node.js的SSR实现方案
Mar 21 #Javascript
javascript中call()、apply()的区别
Mar 21 #Javascript
vue实现微信获取用户信息的方法
Mar 21 #Javascript
vue里如何主动销毁keep-alive缓存的组件
Mar 21 #Javascript
基于node简单实现RSA加解密的方法步骤
Mar 21 #Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 #Javascript
You might like
PHP的autoload机制的实现解析
2012/09/15 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
javascript 写类方式之十
2009/07/05 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
Python实现的Kmeans++算法实例
2014/04/26 Python
python实现端口转发器的方法
2015/03/13 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Python3.6简单反射操作示例
2018/06/14 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
详解Python3 pickle模块用法
2019/09/16 Python
用python写测试数据文件过程解析
2019/09/25 Python
HTML5标签小集
2011/08/02 HTML / CSS
橄榄树药房:OLIVEDA
2019/09/01 全球购物
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
各国货币符号大全
2022/02/17 杂记
Python开发简易五子棋小游戏
2022/05/02 Python