配列の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