using System;using System.Collections.Generic;using Random = UnityEngine.Random;public static class IListExtension{ // 洗牌 public static void Shuffle (this IList list) { for (var i = list.Count - 1; i >= 0; --i) { var index = Random.Range(0, list.Count); var temp = list[index]; list[index] = list[i]; list[i] = temp; } } // 按权重选取 public static T SelectByWeight (this IList > list) { var allWeight = 0; foreach (var (weight, _) in list) allWeight += weight; if (allWeight == 0) return default; var value = Random.Range(0, allWeight); foreach (var (weight, item) in list) { if (value < weight) return item; value -= weight; } return default; } }