大众计算机学习网

专门提供各种电脑教程

Flash随机random函数详解

Admin | 2008-1-5 19:10:27 | 被阅次数 | 19716

        1、random(number)函数介绍
        见帮助文档,简单再提一下,random(number)返回一个0~number-1之间的随机整数.参数number代表

        一个整数.
        示例:

        trace(random(5));
        //复制到主场景第一帧.

        2、Math.random()
        见帮助文档。返回一个有14位精度的0~1之间的数,注意没有参数。听说MM是推荐用这个函数的,而不是上面那个.个人觉得前一个还是好用一点.
示例:

        trace(Math.random());
        //复制到主场景第一帧.

3、自定义的函数
        MM给我们的就这两个函数了,但是需求与供给总是存在矛盾。我们有时候需要的随机数可不是这么简单。比如我们想返回一个有两位小数的随机数,返回两个数之间的随机数,返回字母随机数,返回多个随机数等等,这些都需要我们自己编写函数来实现。下面的代码直接复制到主场景第一帧就可以调用了。注意有的函数需要入口参数。

# 返回一个共有n位数,其中m位是小数的随机数

function randomXiao(n,m){
  var a = Math.pow(10, n+m);
  var b = random(a);
  return b=b/Math.pow(10, m);
}

        大家可以用trace(randomXiao(3,2));来实验一下。这个函数是很简单的了。Math.pow(n,m)用于返回一个以n为底,m为指数的数。就是乘方啦!

# 返回一个n到m之间的随机数

function randomNm(n,m){
  if(m>=n){
    return random(m-n+1)+n;
  }
  else {
    return false;
  }
}

        之所以用random(m-n+1)是因为随机数的范围是m-n,加上1使得m也能在里面。加上n保证随机数以n为下限。加上判断使函数更完整。另外,如果要返回一个负数随机数,也可以用randomNm(n,0);当然,我想更一般的是用-random(n);

# 返回一个字母

function randomAscii(){
  var c = String.fromCharCode(random(26)+65);
  if(random(2)){
    return c.toLowerCase();
  }
  return c;
}

 

返回一个不区分大小写的随机字母

       如果要返回大写,把if条件句去掉就行了。如果要返回小写,可以把条件句改为恒成立,或者去掉条件,最后一句改为:return c.toLowerCase(); String.fromCharCode(number)函数返回number代表数字的ASCII码。toLowerCase()用于将大写字母转为小写。

# 返回一个n到m之间的k个互异随机数

function randomKdiffer(n,m,k){
  arrayK = [];
  var i = 0;
  while (i < k) {
   a = random(m-n+1)+n;
   for (var j = 0; j < i; j++) {
    if (a == arrayK[j]) {
      break;
    }
   }
   if (j == i) {
    arrayK[i] = a;
    i++;
    }
  }
  return arrayK;
}

        数组arrayK中的元素即为所得值。注意到我们借用了random(m-n+1)+n来返回一个n~m的随机数。所以m本身也会被返回。如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把入口参数的K值赋为k=random(m-n);随机返回不一定互异的数,把判断去掉就可以了,注意i++不要漏掉。