Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /**
* this util module is about to provide number support utils
* @module angle-util/numberUtil
*/
export default {
/**
* 生成随机数
* @author youngbeen
* @param { integer } [diceLimit] - 生成的随机数上限值(包含该值),默认为9,不能传入0!
* @param { integer } [diceBase] - 生成的随机数下限值(包含该值),默认为0
* @return { integer } 生成的随机数
* @example
* console.log(numberUtil.random()) // '默认生成0~9的随机数(包含0和9)'
* console.log(numberUtil.random(3)) // '生成0~3的随机数(包含0和3)'
* console.log(numberUtil.random(3, 1)) // '生成1~3的随机数(包含1和3)'
* console.log(numberUtil.random(3, 6)) // '传入了错误的下限值,将生成3~3的随机数(即永远返回3)'
*/
random (diceLimit: number = 9, diceBase: number = 0): number {
// 起始点默认为0,最高点默认为9
// 若起始点比最高点还高的情况,修正为起始点等于最高点
diceBase > diceLimit ? diceBase = diceLimit : diceBase
let diceEnd: number = diceLimit - diceBase + 1
let myRoll: number = Math.floor(Math.random() * diceEnd) + diceBase
return myRoll
},
/**
* 批量生成随机数
* @author youngbeen
* @param { integer } [diceNum] - 生成随机数个数,默认生成2个
* @param { integer } [diceLimit] - 生成的随机数上限值(包含该值),默认为9
* @param { integer } [diceBase] - 生成的随机数下限值(包含该值),默认为0
* @param { boolean } [isDuplicate] - 生成的随机数是否可重复,默认false不重复
* @return { array } 生成的随机数数组
* @example
* console.log(numberUtil.multiRandom()) // '默认生成2个随机数,生成区间0~9(包含0和9),随机数不重复,例如返回[3, 9]'
* console.log(numberUtil.multiRandom(5)) // '生成5个随机数,生成区间0~9(包含0和9),随机数不重复,例如返回[3, 9, 0, 2, 8]'
* console.log(numberUtil.multiRandom(3, 6, 1)) // '生成3个随机数,生成区间1~6(包含1和6),随机数不重复,例如返回[3, 1, 5]'
* console.log(numberUtil.multiRandom(8, 6, 1, true)) // '生成8个随机数,生成区间1~6(包含1和6),随机数可重复,例如返回[3, 1, 5, 2, 3, 6, 2, 5]'
*/
multiRandom (diceNum: number = 2, diceLimit: number = 9, diceBase: number = 0, isDuplicate: boolean = false): Array<number> {
// 默认生成2个随机数,起始点默认为0,最高点默认为9,默认不允许重复
let generatedDices: Array<number> = []
for (let i: number = 0; i < diceNum; i++) {
// 循环生成随机数
let dice: number = this.random(diceLimit, diceBase)
if (!isDuplicate && generatedDices.indexOf(dice) !== -1) {
// 不允许重复,而且已经确定重复的情况
// 不加入结果,撤销自增
i--
} else {
// 合法的dice,放入数组
generatedDices.push(dice)
}
}
// 测试检验用,看生成的dice数量是否达标
if (generatedDices.length !== diceNum) {
console.warn('Error: wrong random result counts in multiRandom()@NumberUtil')
}
return generatedDices
}
}
|