예제 #1
0
        public T GetNext()
        {
            T val = _data[RandomManager.Range(0, _data.Count, _rngId)];

            _data.Remove(val);
            return(val);
        }
예제 #2
0
        public T GetNext()
        {
            T val = _currentBucket[RandomManager.Range(0, _currentBucket.Count, _rngId)];

            _currentBucket.Remove(val);
            if (_currentBucket.Count == 0)
            {
                _currentBucket.AddRange(_data);
            }
            return(val);
        }
예제 #3
0
        public static void Shuffle <T>(this IList <T> list, RngId rngId)
        {
            int num = list.Count;

            while (num > 1)
            {
                num--;
                int index = RandomManager.Range(0, num + 1, rngId);
                T   value = list[index];
                list[index] = list[num];
                list[num]   = value;
            }
        }
예제 #4
0
        public static T RandomElement <T>(this T[] coll, RngId rngId)
        {
            int num = RandomManager.Range(0, coll.Length, rngId);

            return(coll[num]);
        }
예제 #5
0
        public static T RandomElement <T>(this IList <T> coll, RngId rngId)
        {
            int index = RandomManager.Range(0, coll.Count, rngId);

            return(coll[index]);
        }
예제 #6
0
 public static T RandomElement <T>(this IEnumerable <T> list, RngId rngId)
 {
     return(list.ElementAt(RandomManager.Range(0, list.Count(), rngId)));
 }