目前開發的遊戲裏需要處理玩家點擊寶箱後隨機得到一些錢,得到錢的概率如下:
金錢 |
概率 |
500 |
1% |
300 | 5% |
100 | 24% |
50 | 70% |
在這裏我們需要先做一個能產生 1- 100之間的隨機數,代碼如下:
/** * 產生一個隨機數 * @param min - 最小數 * @param max - 最大數 * @return * 最小數 和 最大數 - 1 範圍的數 * 例如: * for (var i:int = 0; i < 300; i++) { * trace(JFRandomUtil.random(1,3).toString()); * } * 結果: * 1,2,1,1,1,1,2 ....,1,1,2,2,2,2,2,1,1,1,2 */ function random(min:Number, max:Number):Number { return Math.floor(Math.random() * (max - min)) + min; }
/** * 根據概率表產生一個概率下標 * @param arg_ProbabilityTable - 概率表 * @return * 概率表下標 */ function makeProbabilityValues(arg_ProbabilityTable:Array):int { var i:int; var randomValue:int = random(1,101); for (i = 0; i < arg_ProbabilityTable.length; i++) { if (randomValue <= arg_ProbabilityTable[i]) { return i; } randomValue -= arg_ProbabilityTable[i]; } return arg_ProbabilityTable.length; }
var oneCount:int = 0; var twoCount:int = 0; var threeCount:int = 0; var fourCount:int = 0; for (var i:int = 0; i < 10000; i++) { var j:int = makeProbabilityValues([70,24,5,1]); if (j < 0 || j > 3) { Trace('error! j='+j.toString()); } if (j == 0) { ++oneCount; } if (j == 1) { ++twoCount; } if (j == 2) { ++threeCount; } if (j == 3) { ++fourCount; } } Trace ('one = ' + oneCount.toString() + ' two:' + twoCount.toString() + ' three:' + threeCount.toString() + ' four:' + fourCount.toString());
結果:
one = 7019 two:2357 three:522 four:102