or1ko's diary

日々を書きます

配列のshuffle

予め用意した集団から適当に幾つかの値を取り出したい時に、配列をシャッフルしてn件取り出したくなる。
そこで、調べてみたところPowerShell及びC#の標準APIには配列をシャッフルするメソッドがないみたいだ。
じゃぁ、誰か作ってるだろうと思ってまた調べてみたのだけれど、結構プログラムを書かなくてはいけなさそうだったので、
PowerShellでそんな面倒なことやってられないわということで、
できるだけ簡単に記述でき、かつ、覚えやすいことを目指して、作ってみた。

> 1..10 | % { Add-Member -InputObject $_ -MemberType noteproperty -Name Tmp -Value $(Get-Random) -PassThru } | Sort-Object -Property Tmp
5
8
6
9
2
3
4
10
7
1

各要素にプロパティが追加される点が残念だ。
短くしてみた。

> 1..10 | % { $_ | add-member -m noteproperty -n T -va $(get-random) -pa } | sort-object -p t