js 제어 난수 생 성 확률 코드 인 스 턴 스

1918 단어 js난수확률.
기본 사고방식: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 제어 난수 생 성 확률 코드 인 스 턴 스 를 상세 하 게 통합 시 키 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 여러분 에 게 답 할 것 입 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기