资源描述
Flash如何使用随机数字函数
通常状况下,随机数字函数有两种形式:
第一种方式:
random(N)
参数N:一个整数
说明:这个函数可以生成一个随机的整数值,数字的范围为0到N-1。
第二种方式:
Math.random()
参数:此函数不需要参数,大家注意不可在小括号内填入数字。
说明:这个函数可以生成一个范围在0到1之间的任意随机数字。
1.直接使用
var n = random(100);//定义变量n,并赋初始变量值为0至99之间的一个随机整数
var n = Math.random();//定义变量n,并赋初始变量值为0至1之间的一个任意随机数
onEnterFrame = function(){
trace(random(10);
}
//以帧频速度,不断在“输出”面板上输出0到9之间的随机整数
上面最后一个例子中,我们可以清晰的看到random(10)这个随机数字的变化范围。(如图)
2.平移改变随机数范围
var n = random(100)+100;//定义变量n,并赋初始变量值为100至199之间的一个随机整数
var n = random(100)-50;//定义变量n,并赋初始变量值为-50至49之间的一个随机整数
var n = Math.random()+9;//定义变量n,并赋初始变量值为9至10之间的一个随机数
当我们需要取得一个并非从0开始的范围的随机数时,我们就可以参照这种“平移变化随机数范围”的方法来改变随机数的范围。
例如,我们需要一个从55至88的一个随机整数。那么首先我们确定一下55至88这个范围的跨度是多大,即:
88-55=33
所以我们直接将33填入随机函数里N的位置,即:
random(33)
然后,我们看一下我们这个范围的起始位置,即:
55
所以我们将他加上55就好了,最后的结果为
random(33) + 55
有了这种方法,以后我们就可以利用他来得出任意范围内的随机整数了。
3.放大或缩小随机数范围
var n = random(100)*2;//定义变量n,并赋初始变量值为0至198之间的一个随机整数,且整数值为2的倍数。即:0,2,4,6,8......
var n = random(100)/2;//定义变量n,并赋初始变量值为0至49.5之间的一个随机数,且数值为0.5的倍数。即:0,0.5,1,1.5,2,2.5......
var n = Math.random()*100//定义变量n,并赋初始变量值为0至100之间的一个任意随机数。
上一节最后这类用放大或缩小随机数范围的方法改变随机数范围通常有两个用途:
•第一种用途是当需要一个在一规律跳跃形式的范围中进行随机数的使用时。
例如有时我们就需要从这样的范围内选择随机数:{0,3,6,9}这是我们就要用到这种放大随机数范围的方法,为我们的随机数字函数乘上或者除上一个数字。此例中,我们的乘数为3,这个数字是由每相邻两个数字的跨度得出。如此例中即为3-0=3。然后再确定随机函数中参数N,他的得出方法是我们需要的范围跨度除以乘数。
•第二种用途是需要一个较大范围的随机任意数(而不是整数)。
我们直接将Math.random()这种形式的随机函数乘上我们需要的范围跨度,就能得出一个较大范围的随机任意数。我想当初语言设计师将这个函数本身的范围设计成0至1之间,就是为了方便我们这么做的,呵呵。
3.综合应用
var n = Math.random()*100 – 50;//定义变量n,并赋初始变量值为-50至50之间的一任意随机数。
var n = random(10)*10+100;//定义变量n,并赋初始变量值为100至190之间的随机整数,且整数值为10的倍数。即:100,110,120,130,140.......
我们将平移改变随机数范围的方法和扩大错小随机数范围的方法结合使用,就可以得到任何我们需要的随机数范围了。
随机数是大家以后在用Flash AS制作特效时必然会用到的一个非常重要的函数,通过本篇教程的学习,相信大家一定可以驾驭得了这个调皮的函数了。
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++不要漏掉。
展开阅读全文