JS计算排列组合结果个数(双色球,大乐透计算注数)
来源:互联网 发布:mac os x 10.12 beta2 编辑:程序博客网 时间:2024/05/29 06:50
采用计算结果的方式获取结果集合length 当结果集合过大,会有卡顿现象:
Array.prototype.combinate = function(iItems, aIn) { if (!aIn) { var aIn = new Array(); this.combinate.aResult = new Array(); } for (var i = 0; i < this.length; i++) { var a = aIn.concat(this[i]); var aRest = this.concat(); // Concat with nothing to create copy aRest.splice(0, i + 1); if (iItems && iItems - 1 <= aRest.length) { aRest.combinate(iItems - 1, a); if (iItems == 1) this.combinate.aResult.push(a); } } return this.combinate.aResult;};
然后想到了按照公式直接计算结果:
如题,按照公式m!/n!(m-n)! 双色球33选5 33!/5!(33-5)! 算一下33!,8.6833176188119 * 10的36次方
The JavaScript number format allows you to exactly represent all integers between−9007199254740992 and 9007199254740992 (即正负2的53次方)
很明显超了,不精准了!
然后想到了自己计算组合的方法,8选3组合个数为 8*7*6/3*2*1
没错就用他来解决
Array.prototype.combine = function (iItems) { function func(n,m){ if(m==0) return 1; else return n*func(n-1,m-1); } // c 83 = 8*7*6/ 3*2*1 var bottomNumber = this.length; var topNumber = iItems; return func(bottomNumber,topNumber)/func(topNumber,topNumber);};
完美的解决了问题
0 0
- JS计算排列组合结果个数(双色球,大乐透计算注数)
- 计算排列组合个数的 两个函数
- js浮点数计算
- js实现实时计算结果
- 结果值在int类型内的排列组合计算
- 排列组合公式/排列组合计算公式
- 排列组合公式/排列组合计算公式
- 排列组合公式/排列组合计算公式
- C语言--计算二进制数中1的个数(&)
- [面试]排列组合与概率计算(一)
- 排列组合计算公式
- 排列组合计算公式
- MATLAB排列组合计算
- 一般排列组合计算
- [转]排列组合计算
- MATLAB计算排列组合
- 排列组合的计算
- Python 排列组合的计算
- 快速排序
- Android 三种动画详解
- ArcGIS 注册版本长时间无响应处理案例
- 从0开始学习 GitHub 系列之「03.Git 速成」
- 【ORACLE】Oracle11g,12c 高危漏洞
- JS计算排列组合结果个数(双色球,大乐透计算注数)
- 深入分析Volatile的实现原理
- css自适应等分
- caffe多标签训练
- CSS梦幻光球loading
- 结构型模式之组合COMPOSITE
- 防重复提交
- 不仅仅是SLAM而是真正的机器视觉
- 为input中的date设置日期