コード例 #1
0
        public int RandomResult()
        {
            int r      = random.Next(0, _totalWeight);
            int weight = 0;

            foreach (WeightItem item in _weights)
            {
                weight += item.iWeight;
                if (weight >= r)
                {
                    return(item.ID);
                }
            }

            return(-1);
        }
コード例 #2
0
        /// <summary>
        /// 随机从 0 ~ max-1 中取出不重复的 num 个整数
        /// @wangzhenhai
        /// </summary>
        public static int[] GetRandom(int num, int max, MersenneTwisterRandom r)
        {
            if (num < 0 || max < 0 || num > max)
            {
                return(null);
            }

            int[] result = new int[num];
            int[] seed   = new int[max];

            for (int i = 0; i < max; i++)
            {
                seed[i] = i;
            }

            for (int i = 0; i < num; i++)
            {
                int index = r.Next(0, max - i);
                result[i]   = seed[index];
                seed[index] = seed[num - i - 1];
            }

            return(result);
        }
コード例 #3
0
 public static int MTRandom(int min, int max, MersenneTwisterRandom mtRandom)
 {
     return(mtRandom.Next(min, max));
 }