using System;
using System.Collections.Generic;

namespace PKHeX.Core
{
    public static partial class Util
    {
        public static readonly Random Rand = new Random();

        public static uint Rand32()
        {
            return (uint)Rand.Next(1 << 30) << 2 | (uint)Rand.Next(1 << 2);
        }

        /// <summary>
        /// Shuffles the order of items within a collection of items.
        /// </summary>
        /// <typeparam name="T">Item type</typeparam>
        /// <param name="items">Item collection</param>
        public static void Shuffle<T>(IList<T> items)
        {
            int n = items.Count;
            for (int i = 0; i < n; i++)
            {
                int r = i + Rand.Next(n-i);
                T t = items[r];
                items[r] = items[i];
                items[i] = t;
            }
        }
    }
}