123456789101112131415161718192021222324252627282930 |
- import { math } from "cc"
- export class MathUtil {
- public static IsInRange(v: number, min: number, max: number): boolean {
- if (v < min) return false
- if (v > max) return false
- return true
- }
- public static randWeight(weight_arr: number[]): number {
- if (!weight_arr) return -1
- if (weight_arr.length <= 0) return -1
- const arr: number[] = [0]
- let totalWeight: number = 0
- for (let i = 0; i < weight_arr.length; i++) {
- const weight: number = weight_arr[i];
- totalWeight += weight
- arr.push(arr[i] + weight)
- }
- const w: number = math.randomRange(0, totalWeight)
- for (let i = 0; i < arr.length; i++) {
- if (w >= arr[i] && w <= arr[i + 1]) return i
- }
- return -1
- }
- }
|