C#学习笔记-随机函数Random()的⽤法详解Random.Next() 返回⾮负随机数;
Random.Next(Int) 返回⼀个⼩于所指定最⼤值的⾮负随机数
Random.Next(Int,Int) 返回⼀个指定范围内的随机数,例如(-100,0)返回负数
1、random(number)函数介绍
见帮助⽂档,简单再提⼀下,random(number)返回⼀个0~number-1之间的随机整数.参数number代表⼀个整数.
⽰例:
trace(random(5));
2、Math.random()
见帮助⽂档。返回⼀个有14位精度的0~1之间的数,注意没有参数。
⽰例:
trace(Math.random());
3、⾃定义的函数
我们有时候需要的随机数可不是这么简单。
⽐如我们想返回⼀个有两位⼩数的随机数,返回两个数之间的随机数,返回字母随机数,返回多个随机数等等,
这些都需要我们⾃⼰编写函数来实现。下⾯的代码直接复制到主场景第⼀帧就可以调⽤了。注意有的函数需要⼊⼝参数。#1: 返回⼀个共有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
为指数的数。乘⽅!
# 2: 返回⼀个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); # 3: 返回⼀个字母
function randomAscii(){
var c = String.fromCharCode(random(26)+65);
if(random(2)){
LowerCase();
}
return c;
}
#4: 返回⼀个不区分⼤⼩写的随机字母
如果要返回⼤写,把if条件句去掉就⾏了。如果要返回⼩写,可以把条件句改为恒成⽴,或者去掉条件,最后⼀句改为:LowerCase(); String.fromCharCode(number)函数返回number代表数
字的ASCII码。
toLowerCase()⽤于将⼤写字母转为⼩写。
# 5: 返回⼀个n到m之间的k个互异随机数
private void RandomKDiffer(int n, int m, int k, int[] arrayK){
int i = 0;
int a,j;
Random random = new Random();
while (i < k) {
a =random.Next(m-n+1)+n;
for (j = 0; j < i; j++) {
if (a == arrayK[j]) {
break;
}
}
if (j == i) {
arrayK[i] = a;
i++;
}
}
}
数组arrayK中的元素即为所得值。注意到我们借⽤了random(m-n+1)+n来返回⼀个n~m的随机数。所以m本⾝也会被返回。如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把⼊⼝参数的K值赋为k=random(m-n);
随机返回不⼀定互异的数,把判断去掉就可以了,注意i++不要漏掉。这⾥不再给出。
#指定若⼲个字符/数字,然后从中随机返回⼀个(或多个)字符/数字,可以把原字符赋给⼀个数组,再根据数组的下标来
决定返回值。这⾥不再举出函数,⼤家可以⾃⼰尝试。
#另需指出,对于随机设定⼀个MC的颜⾊值,我们较多采⽤mcColor.setRBG(random(0xFFFFFF));下⾯的例⼦中会有说明。如果要指定⼀个⾊域,可以采⽤上⾯给出的函数。如果对Color对象不太了解的可以查帮助,这⾥不作讨论。
以上函数算是由random直接衍⽣的,下⾯再举个例⼦,可以说是衍⽣函数的衍⽣函数,其中会直接⽤到上⾯给出的函数,请注意。
#6: 返回⼀个指定长度的随机⼤写英⽂字符串
function randomString(n){
var arrayA = randomKdiffer(1, 26, n);
var arrayB = "";
for (var i = 0; i < n; i++) {
c=String.fromCharCode(arrayA[i]+64);
/* if(random(2)){
LowerCase();
}
*/
arrayB = arrayB+c;
}
return arrayB;
}
注意到StringCharCode⽅法,如果要写成⼩写,则把返回值写成LowerCase();如果返回⼀个不区分⼤⼩写的字符串,
则把注释去掉.如果要返回⼀个不指定长度的字符串,则可以把⼊⼝参数赋值为random(n);这样只指定其上限.此函数也可以⽤
randomAscii函数实现,留给⼤家⾃⼰思考.
#7:在⼏个区域中选出随机数
⽐如,在1~20,45~70这两段数之间选取⼀个随机数。因为区域数未定,所以直接⽤⼀个确定的函数编写多有不便,
我们要使⽤的⽅法就是⽤switch语句进⾏定向,具体的我们给出⼀个函数,返回⼀个1~20,45~70内的数,其它区域读者请⾃⾏更改。
function randomArea(){
var a=random(2);
switch(a){
case 0:
return randomNm(1,20);break;
case 1:
return randomNm(45,70);break;switch函数用法举例
}
}
注意,我们并没有写⼊⼝参数,⽽是直接在函数中就确定了是两段数,⽽且范围也是确定的。如果是三段,则改为
a=random(3);
同样增加⼀个case就可以了。当然,你也可以把第段数的范围设为⼊⼝参数,这⾥就不再举例了。但是这样做可能会使参数增多,
我个⼈是不太喜欢⼀个需要很多参数的函数的。类似的,我们也可以随机返回⼀个字母段或⼏个字母段或者字母加数字段的⼀个数。
⽅法也只是前⼏个函数的⼀个结合。这⾥仅举⼀例,返回指定的⼤写字母段的⼀个随机字母。
提醒⼀下,⼩写字母的ASCII码a~z分别对应97~122.
function randomAArea(a,b){
if (ord(a) <= ord(b) && 65<=ord(a) && ord(b) <= 90) {
return String.fromCharCode(randomNm(ord(a), ord(b)));
} else {
return false;
}
}
其中⽤到⼀个函数ord(char),这是⼀个不推荐的函数.⽤于返回char字符的ASCII码。
如果⼤家想在任何地⽅调⽤函数,则需要稍稍变⼀下,把我们写的函数改变为全局函数.这样就可以不⽤标明路径⽽⾃如地向调⽤系统
函数⼀样了.⽅法如下.例如:函数randomXiao如果要声明为全局函数,需要把第⼀⾏改为:
_global.randomXiao=function(n,m){
//statment
}
对全局函数的概念不很清楚的朋友不⽤被这个名词吓倒.
这样改了函数第⼀⾏之后,在任何地⽅,⽐如在⼀个MC⾥,直接⽤(对,直接⽤,不⽤加_root路径了)randomXiao(n,m)就可以了.
以上这篇C#学习笔记- 随机函数Random()的⽤法详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论