首页 > 编程 > JavaScript > 正文

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

2019-11-19 11:57:34
字体:
来源:转载
供稿:网友

基本思路:把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控制随机数生成概率代码实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表