「C♯で配列やコレクションをシャッフルする」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 37行目: | 37行目: | ||
} | } | ||
</source> | </source> | ||
== 関連項目 == | |||
* [[C♯で配列やコレクションをチャンク分け]] | |||
* [[C♯でメルセンヌ・ツイスタ乱数]] | |||
2019年11月26日 (火) 08:14時点における最新版
C#にもPHPのshuffle(&Array)のパクリが欲しい。
using System;
using System.Collections.Generic;
using System.Linq;
public static class IEnumerableExtension
{
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection)
{
return collection.OrderBy(i => Guid.NewGuid());
}
}
乱数生成器が指定できたほうがよくね?Randomクラスはアルゴリズムがよろしくないらしいが、シールドクラスではないのでメルセンヌ・ツイスタあたりを実装すればいい。
using System;
using System.Collections.Generic;
using System.Linq;
public static class IEnumerableExtension
{
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection, Random random)
{
return collection.OrderBy(i => random.Next());
}
public static IEnumerable<TSource> Shuffle<TSource>(this IEnumerable<TSource> source)
{
return source.Shuffle<TSource>(new Random());
}
}