求一个javascript大小比例函数

mzli 2006-03-24 05:24:08
求教:
{1,2,3,4,……,32,33} 数组中,通过设定大小比例(16以下为小,17以上为大)
如设定大小比为[4:2] ,33个数字中选择取6个数字


返回数组:16以下的数字个数为 4个,17以上的数字个数为 2个
如(3,5,7,9,20,21)

希望能写成函数。谢谢各位大侠
...全文
169 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzli 2006-03-25
  • 打赏
  • 举报
回复
例如
比例4:2

返回结果
03,05,09,11,20,23
03,05,09,11,27,29
03,05,09,11,23,27
03,05,09,11,20,27
……
05,09,11,15,29,32
……

当然此排列组合数组数量较大,我已用其他方式对访客选择的数字的组合数量作了限制。
mzli 2006-03-25
  • 打赏
  • 举报
回复

我的意思是想在你的函数中加多一项参数lonum
(在33个数字任意选择的数字组成的字符串。)

如:访客选择 03,05,09,11,15,20,23,27,29,30,32 作为参数lonum的值,然后通过
选择比例:(min,max) 来对lonum数组计算出多组的符合大小比例排列组合数列。

function getArray(min, max,lonum) {

……
}
mzli 2006-03-25
  • 打赏
  • 举报
回复
有没人帮帮忙啊
KimSoft 2006-03-25
  • 打赏
  • 举报
回复
呵呵,我认为你的主题的问题我已经解答OK了。后面我不明白你在想表述什么?
mzli 2006-03-25
  • 打赏
  • 举报
回复
我在写一个双色球的在线缩水选号程序。
其中一个大小比例的缩水公式不会写。
KimSoft 2006-03-25
  • 打赏
  • 举报
回复
?!
mzli 2006-03-24
  • 打赏
  • 举报
回复

目的:作一个网页式的双式球缩水javascript程式
访客“随便”点选33个红球内的,33个数以内的红球(数目各不相同)
现求教 大小比例(即主题所描述)缩水法的javascript程式

下边的是:奇偶比例缩水法的javascript程式 (范例)
注释:lonum 为访客选取红球组成的数组
oddv 奇偶比例 分别是:0:6 1:5 2:4 3:3 4:2 5:1 6:0
function countODD(lonum){
var ODDcount=0;
for (var i=0; i<lonum.length; i++) {
if ((lonum[i]%2)==1) {
ODDcount++;
}
}
return ODDcount;
}

function resultODD(lonum,oddv){
var resultnum=new Array();
var tmpindex=0;
var ODDvalue=0;
for (var i=0;i<lonum.length;i++) {
ODDvalue=countODD(lonum[i]);
for (var j=0;j<oddv.length;j++) {
if (ODDvalue==oddv[j]) {
resultnum[tmpindex]=lonum[i];
tmpindex++;
j=oddv.length;
}
}
}
return resultnum;
}
KimSoft 2006-03-24
  • 打赏
  • 举报
回复
update
一、随机数重复的问题
二、大数最小可能产生16的问题
KimSoft 2006-03-24
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
<!--
//数组对象的indexOf方法
if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(obj, fromIndex){
if (fromIndex == null){
fromIndex = 0;
}else if (fromIndex < 0){
fromIndex = Math.max(0, this.length + fromIndex);
}

for (var i = fromIndex; i < this.length; i++){
if (this[i] == obj){
return i;
}
}
return-1;
};
}
//产生随机数
function randomNumber(limit){
return Math.floor(Math.random() * limit);
}

//产生指定个数的大小数字,返回数组
function getArray(min, max) {
var aryBase = new Array();
var aryReturn = new Array();
for (var i = 1; i <= 33; i++){
aryBase[aryBase.length] = i;
}
for ( var m = 0; m < min; m++){
var rdmNumber = randomNumber(16);
if (aryReturn.indexOf(rdmNumber) == -1){
aryReturn[aryReturn.length] = rdmNumber;
} else {
m--;
}
}
for ( var n = 0; n < max; n++){
var rdmNumber = 17 + randomNumber(16);
if (aryReturn.indexOf(rdmNumber) == -1){
aryReturn[aryReturn.length] = rdmNumber;
} else {
n--;
}
}
return aryReturn
}



document.write(getArray(4, 2).join("<br>"))

//-->
</SCRIPT>
clare2003 2006-03-24
  • 打赏
  • 举报
回复
测试了一下楼上的算法出来的六个数,是随机产生的,
有可能重复!
KimSoft 2006-03-24
  • 打赏
  • 举报
回复
<SCRIPT LANGUAGE="JavaScript">
<!--
function getArray(min, max) {
var aryBase = new Array();
var aryReturn = new Array();
for (var i = 1; i <= 33; i++){
aryBase[aryBase.length] = i;
}
for ( var m = 0; m < min; m++){
aryReturn[aryReturn.length] = randomNumber(16)
}
for ( var n = 0; n < max; n++){
aryReturn[aryReturn.length] = 16 + randomNumber(16)
}
return aryReturn
}

function randomNumber(limit){
return Math.floor(Math.random() * limit);
}

document.write(getArray(4, 2).join("<br>"))
//-->
</SCRIPT>

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧