请教一个生成随机数组的问题 我想用随机数成生一个有7个数字的数组,这些数字每个都不一样,且都少于7,也就是说0123456随机排列,是用JAVASCRIPT写的,请高手们教导一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先随机生成7以内的数字,再判断数组中是否存在,不存在就push进去,否则继续随机生成,知道push进去7个 function init(){ var m=""; var count=0; var a=[0,1,2,3,4,5,6]; for(var i=0;i>-1;i++){ var x=parseInt(Math.random()*7); if(a[x]==-1){ continue; }else{ m+=a[x]; a[x]=-1; } for(var k=0;k<a.length;k++){ if(a[k]==-1){ count+=1; if(count==28){ alert(m); return; } } } }}window.onload=init;这样试试 大体思路是随机一个0到6的数 其中每个数对应数组的一个元素,被随机到的数所对应的数组元素则设为-1,这样的一直随机这个数 直到数组的元素都为-1为止 每次随机都判断数组中有几个元素为-1,因为随机的是7个数 所以在满足条件后会判断7次,所以counte 的最后数字应该是1+2+3+4+5+6+7=28 此时满足七个数字每个数字都不同 大体是这个意思 但效率可能会很低 呵呵 其实,思路还是很重要的。alert([0,1,2,3,4,5,6].sort(function(){return Math.random()>0.5})) 就是要那样“生成”,也不必如此麻烦:<script>var arr = [], hsh = {};while (arr.length < 7) { var num = Math.random() * 7 >>> 0; hsh[num] || (hsh[num] = 1) && arr.push(num);}alert(arr)</script> var arr = [0,1,2,3,4,5,6]; for(var i = 0; i < 7; i++){ arr.sort(function(){ return Math.random() - 0.5; }); } alert(arr); var arr = [], hsh = {};while (arr.length < 7) { var num = Math.random() * 7 >>> 0; hsh[num] || (hsh[num] = 1) && arr.push(num);}alert(arr)正解 其实严格点说这个方法不太符合要求,毕竟机率不均等。下面这个就差不多了 var arr = [0,1,2,3,4,5,6], ret = []; while(arr.length !== 0){ var rand = Math.floor(Math.random() * arr.length); ret.push(arr.splice(rand, 1)); } alert(ret); JS打印页面,怎么把地址栏的地址也打印出来了??怎么隐藏? 如何用js实现跳转并执行跳转后的页面里的js函数 关于文字跑马灯暂停的问题请教 一个checkbox该如何用js判断 IE7用showModalDialog方法 如何在table中锁定列?多谢各位. 版主、高手你在哪里? 各位麻烦一下, 请问怎么将 子窗口里的参数传到父窗口,并且让父窗口刷新一次!!! 页面多次使用同一个插件 父页面弹出的子页面跳转后,怎么刷新父页面? 这段代码的执行结果很诡异,还望高手不吝赐教! 请教一个关于id的问题
var m="";
var count=0;
var a=[0,1,2,3,4,5,6];
for(var i=0;i>-1;i++){
var x=parseInt(Math.random()*7);
if(a[x]==-1){
continue;
}else{
m+=a[x];
a[x]=-1;
}
for(var k=0;k<a.length;k++){
if(a[k]==-1){
count+=1;
if(count==28){
alert(m);
return;
}
}
}
}
}
window.onload=init;
这样试试
就是要那样“生成”,也不必如此麻烦:<script>
var arr = [], hsh = {};
while (arr.length < 7) {
var num = Math.random() * 7 >>> 0;
hsh[num] || (hsh[num] = 1) && arr.push(num);
}
alert(arr)
</script>
for(var i = 0; i < 7; i++){
arr.sort(function(){
return Math.random() - 0.5;
});
}
alert(arr);
while (arr.length < 7) {
var num = Math.random() * 7 >>> 0;
hsh[num] || (hsh[num] = 1) && arr.push(num);
}
alert(arr)
正解
ret = [];
while(arr.length !== 0){
var rand = Math.floor(Math.random() * arr.length);
ret.push(arr.splice(rand, 1));
}
alert(ret);