js控制隨機(jī)數(shù)生成概率代碼實(shí)例
基本思路:把Math.random()生成的數(shù)看著百分比,然后定義每個(gè)整數(shù)值取值范圍。
具體內(nèi)容如下,供大家參考
'use strict';
export default class GL {
/**
* 構(gòu)造函數(shù)
* @param {object} opt
* @param {number} opt.min 最小整數(shù)值
* @param {number} opt.max 最大整數(shù)值
* @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;
}
/**
* 隨機(jī)數(shù)
* @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], // 數(shù)值,百分比
[22, 0.4]
])
});
// 測(cè)試
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控制隨機(jī)數(shù)生成概率代碼實(shí)例詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- JS生成隨機(jī)數(shù)的多種方法匯總(不同范圍、類型的隨機(jī)數(shù))
- JavaScript中隨機(jī)數(shù)方法?Math.random()
- Javascript實(shí)現(xiàn)仿QQ隨機(jī)數(shù)驗(yàn)證
- Js生成隨機(jī)數(shù)/隨機(jī)字符串的方法小結(jié)【5種方法】
- JavaScript隨機(jī)數(shù)的組合問(wèn)題案例分析
- js實(shí)現(xiàn)隨機(jī)數(shù)小游戲
- JavaScript生成指定范圍隨機(jī)數(shù)和隨機(jī)序列的方法
- javaScript產(chǎn)生隨機(jī)數(shù)的用法小結(jié)
- JS隨機(jī)數(shù)產(chǎn)生代碼分享
- JavaScript中獲取隨機(jī)數(shù)的幾種方法小結(jié)
相關(guān)文章
JavaScript基礎(chǔ)語(yǔ)法、dom操作樹(shù)及document對(duì)象
本文介紹了學(xué)習(xí)javascript重要的3個(gè)內(nèi)容基礎(chǔ)語(yǔ)法、dom操作樹(shù)及document對(duì)象,小伙伴們一定要弄明白才行2014-12-12
前端編碼規(guī)范(3)JavaScript 開(kāi)發(fā)規(guī)范
這篇文章主要介紹了前端編碼規(guī)范(3)JavaScript 開(kāi)發(fā)規(guī)范,需要的朋友可以參考下2017-01-01
Typescript中interface與type的相同點(diǎn)與不同點(diǎn)的詳細(xì)說(shuō)明
這篇文章主要介紹了Typescript中interface與type的相同點(diǎn)與不同點(diǎn),并配有實(shí)例說(shuō)明,需要的朋友可以參考下2022-11-11
使用RequireJS優(yōu)化JavaScript引用代碼的方法
這篇文章主要介紹了使用RequireJS優(yōu)化JavaScript引用代碼的方法,RequireJS是一款人氣JS庫(kù),需要的朋友可以參考下2015-07-07
THREE.JS入門(mén)教程(5)你應(yīng)當(dāng)知道的十件事
Three.js是一個(gè)偉大的開(kāi)源WebGL庫(kù),WebGL允許JavaScript操作GPU,在瀏覽器端實(shí)現(xiàn)真正意義的3D,本文會(huì)讓你了解一下使用THREE.JS處理3D/避免SetInterval/使用倒序循環(huán)等等,感興趣的朋友可以了解下哦2013-01-01
javascript基礎(chǔ)之查找元素的詳細(xì)介紹(訪問(wèn)節(jié)點(diǎn))
常用jQuery的話我們知道,jQuery有非常強(qiáng)大的選擇器來(lái)查找元素(也稱作訪問(wèn)節(jié)點(diǎn)),例如:基本選擇器、層次選擇器、過(guò)濾選擇器、屬性選擇器等2013-07-07
javascript的數(shù)組和常用函數(shù)詳解
這篇文章主要介紹了javascript的數(shù)組和常用函數(shù)詳解,非常詳細(xì),適合新手學(xué)習(xí),需要的朋友可以參考下2014-05-05

