1、理论

1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) ,可均衡获取0到1的随机整数。

2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分(向下取整)
parseInt()和Math.floor()结果都是向下取整。
parseInt() 函数可解析一个字符串,并返回一个整数。

3.Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数(四舍五入)

4.Math.ceil(n); 返回大于等于n的最小整数(向上取整)

2、三中方法对随机数取整的比较

1.用Math.ceil(Math.random()*10);时,主要获取1到10的随机整数,取0的几率极小

2.用Math.round(Math.random()*10);时,可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。

3.用Math.floor(Math.random()*10);时,可均衡获取0到9的随机整数。

优先使用Math.floor(Math.random()*10);取随机整数,但需要做一定的处理,如取[0,10]的随机整数,

Math.floor(Math.random()*11)

如果成从minNum到maxNum的随机数,如生成[4,14]之间的随机数,则可以写成

parseInt(Math.random()*(14-4+1)+10,10); 
Math.floor(Math.random()*(14-4+1)+10);

3、生成从[min,max]的随机数

//生成从[min,max]的随机数
//Math.floor(Math.random()*minNum+1); 可以用替换为
//parseInt(Math.random()*(max-min+1)+min,10);
function randomNum(min,max){ 
    switch(arguments.length){ 
        case 1: 
            return Math.floor(Math.random()*minNum+1); 
        break; 
        case 2: 
            return Math.floor(Math.random()*(max-min+1)+min); 
        break; 
            default: 
                return 0; 
            break; 
    } 
}

编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。

//需要对n ,min max 的值做检查 只能为数字 
        // 1、n 的取值范围不能炒股 min - max

        (function fn(n,min,max){
        //准备一个空数组用于返回
            var result = [];
            for(var i=0; i<n; i+=1){
                //创建一个随机数
                var num = randomNum(min,max);
                //对随机数检查 ,是否重复
                var s = result.indexOf(num);
                if(s>=0){
                   //随机数已经存在,需要重新循环一次
                   i--;

                }else{
                    result.push(num);
                }
            }
//           return result;
             console.log(result);
        })(3,2,32)

4、Array.indexOf 函数

搜索 Array 对象的指定元素返回该元素的索引。 此函数是静态的,可在不创建对象实例的情况下调用。
var indexVar = Array.indexOf(array, item, start);

术语

定义

array

要搜索的数组。

item

要在数组中查找的对象。

startIndex

可选)指定在数组中搜索的起始元素的索引号。

4.1返回

如果找到 item,则返回表示该元素在数组中的索引位置的编号;否则返回 -1。
在 Mozilla Firefox 中,如果调用 indexOf 时未设置 item 或将其设置为 undefined,则返回值为 undefined 的第一项的索引。 在同样的情况下,所有其他浏览器都返回 -1。

4.2备注

使用 indexOf 函数可确定某个元素在数组实例中第一次出现的索引位置。

4.3示例

下面的示例演示如何使用 indexOf 函数查找指定项的索引位置。 返回的索引是在 item 中指定的项的第一次出现。 再次调用该函数,并指定大于所找到元素的索引的起始索引值,可查找 item 的下一次出现。

var a = ['red', 'blue', 'green', 'blue'];
var myFirstIndex = Array.indexOf(a, "blue");
// View the results: "1"
alert("myFirstIndex: " + myFirstIndex);
var mySecondIndex = Array.indexOf(a, "blue", (myFirstIndex + 1) );
// View the results: "3"
alert("mySecondIndex: " + mySecondIndex);