예제 #1
0
        /// <summary>
        /// 配列の要素の重みを考慮して要素のインデックスを返す
        /// </summary>
        public static int GetUnityRandomIndexWithWeight(params int[] weightArray)
        {
            int totalWeight = 0;

            for (int i = 0; i < weightArray.Length; i++)
            {
                totalWeight += weightArray[i];
            }

            int randomValue = RandomUtil.Range(1, totalWeight + 1);
            int index       = -1;

            for (var i = 0; i < weightArray.Length; ++i)
            {
                if (weightArray[i] >= randomValue)
                {
                    index = i;
                    break;
                }
                randomValue -= weightArray[i];
            }
            return(index);
        }
예제 #2
0
 /// <summary>
 /// 渡された配列の中からランダムで1つを返す
 /// </summary>
 public static T GetUnityRandomValue <T>(params T[] values)
 {
     return(values[RandomUtil.Range(0, values.Length)]);
 }
예제 #3
0
 /// <summary>
 /// 指定された確率でtrueを返す
 /// </summary>
 public static bool GetUnityRandomBool(int probability)
 {
     return(RandomUtil.Range(0, 100) < probability);
 }