开启左侧

Flash随机random函数详解

[复制链接]
etthink 发表于 2009-11-6 11:33:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Flash随机random函数详解        

        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条件句去掉就行了。如果要返回小写,可以把条件句改为恒成立,或者去掉条件,最后一句改为:returnc.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 = a;
    i++;
    }
  }
  return arrayK;
}       数组arrayK中的元素即为所得值。注意到我们借用了random(m-n+1)+n来返回一个n~m的随机数。所以m本身也会被返回。如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把入口参数的K值赋为k=random(m-n);随机返回不一定互异的数,把判断去掉就可以了,注意i++不要漏掉
学教育技术,上教育技术论坛!http://www.etthink.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


11关注

462粉丝

7846帖子

推荐阅读更多+
会员达人更多+
广告位

最新信息

更多+

关注我们:教育技术人

官方微信

官方微博

教育技术热线:

13955453231

学教育技术,上教育技术论坛!

教育技术论坛征稿范围:教育技术应用案例、教程文章、优秀作品等。

Email:sf@etthink.com

Copyright   ©2007-2026  应用思考-教育技术论坛  Powered by©Discuz!  技术支持:且行资源    ( 皖ICP备10014945号-4 )