js自定义函数生成随机数四种方法

发布时间:2019-11-01编辑:脚本学堂
javascript如何生成随机数,这里分享四种方法,使用js自定义函数生成随机数代码,生成随机字符串,需要的朋友参考下。

js自定义函数生成随机数的方法一
 

复制代码 代码示例:
/*
*@desc:生成随机字符串
*@remark:toString方法可以接收一个基数作为参数的原理,这个基数从2到36封顶。如果不指定,默认基数是10进制
*/
function generateRandomAlphaNum(len) {
  var rdmString = "";
  for (; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
  return rdmString.substr(0, len);
}

js自定义函数生成随机数的方法二
 

复制代码 代码示例:
//JS生成GUID函数,类似.net中的NewID();
function S4() {
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
 
function NewGuid() {
  return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

js自定义函数生成随机数的方法三
 

复制代码 代码示例:
//JS生成GUID函数,类似.net中的NewID();
function newGuid() {
  var guid = "";
  for (var i = 1; i <= 32; i++) {
    var n = Math.floor(Math.random() * 16.0).toString(16);
    guid += n;
    if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
      guid += "-";
  }
  return guid;
}

js自定义函数生成随机数的方法四
 

复制代码 代码示例:
/*
*@desc:生成随机字符串
*@demo:console.log(ranStr());
*/
;(function(){
  //数字0-9,大写字母,小写字母,ASCII或UNICODE编码(十进制),共62个
  var charCodeIndex = [[48,57],[65,90],[97,122]];
  var charCodeArr = [];
 
  function getBetweenRound(min,max){
    return Math.floor(min+Math.random()*(max-min));
  };
 
  function getCharCode(){
    for(var i=0,len=3;i<len;i++){
      var thisArr = charCodeIndex[i];
      for(var j=thisArr[0],thisLen=thisArr[1];j<=thisLen;j++){
        charCodeArr.push(j);
      }
    }
  }
 
  function ranStr(slen){
    slen = slen || 20;
    charCodeArr.length<62 && getCharCode();
 
    var res = [];
    for(var i=0;i<slen;i++){
      var index = getBetweenRound(0,61);
      res.push(String.fromCharCode(charCodeArr[index]));
    }
    return res.join('');
  };
 
  this.ranStr = ranStr;
})();

1,使用内置的随机数发生方法:
 

Math.random(); //该方法产生一个0到1之间的浮点数
Math.floor(Math.random()*10+1); //1-10
Math.floor(Math.random()*24);//0-23

2,基于时间,亦可以产生随机数:
 

var now=new Date();
var number = now.getSeconds(); //这将产生一个基于目前时间的0到59的整数。
var now=new Date();
var number = now.getSeconds()%43; //这将产生一个基于目前时间的0到42的整数。

3,随机数发生器程序
 

<script language="javascript"><!--
// The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)
// See:  http://www.msc.cornell.edu/~houle/javascript/randomizer.html
rnd.today=new Date();
rnd.seed=rnd.today.getTime();
function rnd() {
    rnd.seed = (rnd.seed*9301+49297) % 233280;
    return rnd.seed/(233280.0);
};
function rand(number) {
    return Math.ceil(rnd()*number);
};
// end central randomizer. -->
</script>

四位随机数功能
从数字和字母中随机抽取四个不重复的字符。
 

复制代码 代码示例:
function only(ele,arr){
 if(arr.length==0){
  return true;
 }
 for(var j=0;j<arr.length;j++){
  if(ele==arr[j]){
   return false;
  }else{
   return true;
  }
 }
}
 
var arr=[0,1,2,3,4,5,6,"a","b","c","d","e","f","g"];
 
(function(){
 var randNum=null;
 var old=[];
 var str="";
 function done(){
  randNum=Math.floor(Math.random()*14);
  if(only(randNum,old)){
   str=str+arr[randNum];
   old.push(randNum);
  }
  else{
   done();
  }
 }
 for(var index=0;index<4;index++){
  done();
 }
 console.log(str);
})(arr)

一.代码注释:
1.function only(ele,arr){},此函数可以实现判断指定的索引是否已经使用过了,放置随机数出现重复。
2.if(arr.length==0){},如果数组为空,那么就说明不可能是重复的情况,返回true。
3.for(var j=0;j<arr.length;j++){},数组不为空,就遍历数组中的元素,进行比对,没有重复的就返回true,否则返回false。4.var arr=[0,1,2,3,4,5,6,"a","b","c","d","e","f","g"],获取随机数的数组,当然可以进行扩充。
5.(function(){})(arr),一个自执行函数,并传递一个参数。
6.var randNum=null,声明一个变量并赋初值为null,用来存储随机生成的数组索引。
7.var old=[],创建一个空数组,用来存储已经出现过的数组索引值。
8.var str="",创建一个空字符串,用来存放生成的随机数。
9.function done(){},此函数可以用来获取一个随机数。
10.randNum=Math.floor(Math.random()*14),获取数组的索引值。
11.if(only(randNum,old)){
str=str+arr[randNum];
old.push(randNum);
},判断是否已经使用过,如果没有,则获取数组元素,并追加到str字符串中,最后将此索引值追加到old数组。
12.else{ done();
},如果已经用过,那么再获取一次,这里是使用递归的方式。
13.for(var index=0;index<4;index++){
done();
},使用for循环获取4个随机数。