js控制隨機(jī)數(shù)生成概率代碼實(shí)例
基本思路:把Math.random()生成的數(shù)看著百分比,然后定義每個整數(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] ]) }); // 測試 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í)例詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(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ù)的組合問題案例分析
- 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ǔ)語法、dom操作樹及document對象
本文介紹了學(xué)習(xí)javascript重要的3個內(nèi)容基礎(chǔ)語法、dom操作樹及document對象,小伙伴們一定要弄明白才行2014-12-12前端編碼規(guī)范(3)JavaScript 開發(fā)規(guī)范
這篇文章主要介紹了前端編碼規(guī)范(3)JavaScript 開發(fā)規(guī)范,需要的朋友可以參考下2017-01-01Typescript中interface與type的相同點(diǎn)與不同點(diǎn)的詳細(xì)說明
這篇文章主要介紹了Typescript中interface與type的相同點(diǎn)與不同點(diǎn),并配有實(shí)例說明,需要的朋友可以參考下2022-11-11使用RequireJS優(yōu)化JavaScript引用代碼的方法
這篇文章主要介紹了使用RequireJS優(yōu)化JavaScript引用代碼的方法,RequireJS是一款人氣JS庫,需要的朋友可以參考下2015-07-07THREE.JS入門教程(5)你應(yīng)當(dāng)知道的十件事
Three.js是一個偉大的開源WebGL庫,WebGL允許JavaScript操作GPU,在瀏覽器端實(shí)現(xiàn)真正意義的3D,本文會讓你了解一下使用THREE.JS處理3D/避免SetInterval/使用倒序循環(huán)等等,感興趣的朋友可以了解下哦2013-01-01javascript基礎(chǔ)之查找元素的詳細(xì)介紹(訪問節(jié)點(diǎn))
常用jQuery的話我們知道,jQuery有非常強(qiáng)大的選擇器來查找元素(也稱作訪問節(jié)點(diǎn)),例如:基本選擇器、層次選擇器、過濾選擇器、屬性選擇器等2013-07-07javascript的數(shù)組和常用函數(shù)詳解
這篇文章主要介紹了javascript的數(shù)組和常用函數(shù)詳解,非常詳細(xì),適合新手學(xué)習(xí),需要的朋友可以參考下2014-05-05