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 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
几个有趣的Javascript Hack
Jul 24 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
javascript实现简易数码时钟
Mar 30 Javascript
vue-cli4.5.x快速搭建项目
May 30 Vue.js
详解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
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
php命名空间学习详解
2014/02/27 PHP
PHP错误机制知识汇总
2016/03/24 PHP
php分页查询的简单实现代码
2017/03/14 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
关于vue里页面的缓存详解
2019/11/04 Javascript
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python实现按行分割文件
2019/07/22 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
Python wordcloud库安装方法总结
2020/12/31 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
供应链金融服务方案
2014/05/25 职场文书
国庆节演讲稿
2014/05/27 职场文书
师德师风事迹材料
2014/12/20 职场文书
处级干部考察材料
2014/12/24 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
铁人观后感
2015/06/16 职场文书
详解Python flask的前后端交互
2022/03/31 Python
Linux中各个目录的作用与内容
2022/06/28 Servers