C#進修筆記- 隨機函數Random()的用法詳解。本站提示廣大學習愛好者:(C#進修筆記- 隨機函數Random()的用法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是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)){ return c.toLowerCase(); } return c; }
#4: 前往一個不辨別年夜小寫的隨機字母
假如要前往年夜寫,把if前提句去失落就好了。假如要前往小寫,可以把前提句改成恆成立,或許去失落前提,最初一句改成:
return c.toLowerCase(); 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)){ c=c.toLowerCase(); } */ arrayB = arrayB+c; } return arrayB; }
留意到StringCharCode辦法,假如要寫成小寫,則把前往值寫成arrayB.toLowerCase();假如前往一個不辨別年夜小寫的字符串,
則把正文去失落.假如要前往一個不指定長度的字符串,則可以把進口參數賦值為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; } }
留意,我們並沒有寫進口參數,而是直接在函數中就肯定了是兩段數,並且規模也是肯定的。假如是三段,則改成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()的用法詳解就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。