var array=new Array(); // 循环N次生成随机数 for(var i = 0 ; ; i++){ if(array.length<9){ generateRandom(9); }else{ break; } } // 生成随机数的方法 function generateRandom(count){ var rand = parseInt(Math.random()*count); console.log(array); for(var i = 0 ; i < array.length; i++){ if(array[i] == rand){ return false; } } array.push(rand); } var resultaa=''; // 循环遍历随机数数组 for(var i = 0 ; i < array.length; i++){ resultaa+='获得'+array[i]+'等奖'+'\n'; } alert(resultaa);
上述代码中,本意是想生成9个不重复的随机数,但是调用函数generateRandom(9),中
parseInt(Math.random()*count)表示的意思是parseInt(Math.random()*9),这样生成的不就是0~9,也就是有可能出现10这个随机数了吗?
parseInt(Math.random() * count)
這句是產生9以下的隨機數,你會錯意了
決定數量的是第一個for迴圈
你好,首先感谢您的解答,可能我描述的不清楚,我的疑问是,我想要随机生成不重复的0~8数字,这里的generateRandom(9);不就是会出现该随机数是9的情况吗?但是经过多次实现不会出现9呀。。。理论上感觉应该调用的是generateRandom(8);但经过试验发现反而会出现9。。。
@小猪冒泡:
Math.random()會產生小於1的隨機數
任何小於1的隨機數乘以9都會小於9
parseInt效果等同於無條件捨去取整數
對小於9的任意數無條件捨去取整,得小於9的整數
@RosonJ: 嗯嗯 非常感谢您的解答 我一直认为Math.random()是生成[0,1]的随机数,原来是生成[0,1)不包括1,谢谢您的帮助!