첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System.Collections.Generic;
using System.Security.Cryptography;

#region 리스트 섞기 - ShuffleList<TItem>(sourceList)

/// <summary>
/// 리스트 섞기
/// </summary>
/// <typeparam name="TItem">항목 타입</typeparam>
/// <param name="sourceList">소스 리스트</param>
/// <returns>리스트</returns>
public IList<TItem> ShuffleList<TItem>(IList<TItem> sourceList)
{
    RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();

    int count = sourceList.Count;

    while(count > 1)
    {
        byte[] byteArray = new byte[1];

        do
        {
            provider.GetBytes(byteArray);
        }
        while(!(byteArray[0] < count * (byte.MaxValue / count)));

        int index = (byteArray[0] % count);

        count--;

        TItem source = sourceList[index];

        sourceList[index] = sourceList[count];
        sourceList[count] = source;
    }

    return sourceList;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요