アイデアはDOBON.NET(Coding Horror)から。
public static IOrderedEnumerable<TSource> Shuffle<TSource>(
this IEnumerable<TSource> source )
{
return source.OrderBy( x => Guid.NewGuid( ) );
}
使用例:
var values = new[ ] { 1, 2, 3, 4, 5 };
foreach ( var value in values.Shuffle( ) )
{
Console.WriteLine( value );
}
Console.WriteLine( "終了するには何かキーを押して下さい..." );
Console.ReadKey( );
実行結果
2
5
3
4
1
終了するには何かキーを押して下さい...
DOBON.NET: http://dobon.net/vb/dotnet/programing/arrayshuffle.html
Coding Horror: http://www.codinghorror.com/blog/2007/12/shuffling.html