js生成随机数

来源:互联网 发布:mac 数据库管理工具 编辑:程序博客网 时间:2024/04/28 02:31

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);
原创粉丝点击