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++不要漏掉。