「C♯で配列やコレクションをシャッフルする」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「C#にもPHPのshuffle(&Array)のパクリが欲しい。 ググると出てきたLINQ使ったやつ。 <source lang="csharp"> public static class IEnumerabl…」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (同じ利用者による、間の1版が非表示) | |||
| 3行目: | 3行目: | ||
[[ググる]]と出てきた[[LINQ]]使ったやつ。 | [[ググる]]と出てきた[[LINQ]]使ったやつ。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
public static class IEnumerableExtension | public static class IEnumerableExtension | ||
{ | { | ||
| 12行目: | 16行目: | ||
</source> | </source> | ||
乱数生成器が指定できたほうがよくね?Randomクラスは[[アルゴリズム]]がよろしくないらしいが、シールドクラスではないのでメルセンヌ・ツイスタあたりを実装すればいい。 | |||
* [[C♯でメルセンヌ・ツイスタ乱数]] | * [[C♯でメルセンヌ・ツイスタ乱数]] | ||
<source lang="csharp"> | <source lang="csharp"> | ||
public static class | using System; | ||
using System.Collections.Generic; | |||
using System.Linq; | |||
public static class IEnumerableExtension | |||
{ | { | ||
public static IEnumerable< | public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> collection, Random random) | ||
{ | { | ||
return collection.OrderBy(i => random.Next()); | |||
} | } | ||
| 36行目: | 37行目: | ||
} | } | ||
</source> | </source> | ||
== 関連項目 == | |||
* [[C♯で配列やコレクションをチャンク分け]] | |||
* [[C♯でメルセンヌ・ツイスタ乱数]] | |||