基礎
1、Math.random(),其結果為 [0,1) 區(qū)間的隨機小數(shù)。
2、Math.floor(num),向下取num的整數(shù)部分
? ? ? eg: Math.floor(2.99) //2
? ? ? eg: Math.floor(0.01) //0
3、Math.round(num) 其結果為num四舍五入的整數(shù)
4、Math.ceil(n) 向上取整
? ? ? eg: Math.ceil(2.99) //3
? ? ? eg: Math.ceil(0.01) //1
生成隨機數(shù)
var random = function(min, max){
// 若max不存在 min 賦值給max,并重新賦值min
if(max == null){
max = min;
min = 0;
}
return min+ Math.floor(Math.random()*(max-min+1))
}
random(5) // 生成[0, 4) 區(qū)間的整數(shù)
如上述所說Math.random() 為[0, 1)區(qū)間的小數(shù),
乘以(max-min) 為生成從 [min,max) 的隨機數(shù),會發(fā)現(xiàn)隨機數(shù)的最大值達不到max,故要加個1,使其生成[min,max] 閉區(qū)間的整數(shù)。
數(shù)組隨機亂序
var shuffle = function(array){
var rand ;
var index = 0;
var shuffled = []; // 準備一個空數(shù)組用于返回
// 下面就是一個打亂數(shù)組順序的過程
for(var i =0; i<array.length; i++){
////生成一個隨機的索引
var random = random(index++)
// 避免出現(xiàn)空值,故 每次都需要給shuffled[index-1] 賦值
shuffled[index-1] = shuffled[random];
shuffled[random] = array[i];
}
return shuffled;
}
shuffle([1,3,6]) // 數(shù)組隨機亂序