MathUtil.ts 823 B

123456789101112131415161718192021222324252627282930
  1. import { math } from "cc"
  2. export class MathUtil {
  3. public static IsInRange(v: number, min: number, max: number): boolean {
  4. if (v < min) return false
  5. if (v > max) return false
  6. return true
  7. }
  8. public static randWeight(weight_arr: number[]): number {
  9. if (!weight_arr) return -1
  10. if (weight_arr.length <= 0) return -1
  11. const arr: number[] = [0]
  12. let totalWeight: number = 0
  13. for (let i = 0; i < weight_arr.length; i++) {
  14. const weight: number = weight_arr[i];
  15. totalWeight += weight
  16. arr.push(arr[i] + weight)
  17. }
  18. const w: number = math.randomRange(0, totalWeight)
  19. for (let i = 0; i < arr.length; i++) {
  20. if (w >= arr[i] && w <= arr[i + 1]) return i
  21. }
  22. return -1
  23. }
  24. }