Fisher-Yates shuffleで配列シャッフル [js/ts/php]
約 3 分
目次
概要
ts/js/php で配列をシャッフルする際の実装メモです。
配列のシャッフルにはFisher-Yates shuffleを利用しました。
ソース
typescript
const shuffleArr = (src: number[]): number[] => {
const dst = src.slice();
let i = src.length;
while (i > 0) {
i--;
const j = Math.floor(Math.random() * (i + 1));
[dst[i], dst[j]] = [dst[j], dst[i]];
}
return dst;
};
console.log(shuffleArr([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]));
// [ 4, 8, 6, 0, 2, 1, 9, 7, 3, 5 ]
js
const shuffleArr = (src) => {
const dst = src.slice();
let i = src.length;
while (i > 0) {
i--;
const j = Math.floor(Math.random() * (i + 1));
[dst[i], dst[j]] = [dst[j], dst[i]];
}
return dst;
};
php
function shuffleArr(array $src)
{
$i = count($src);
while ($i > 0) {
$i--;
$j = random_int(0, $i + 1);
[$src[$i], $src[$j]] = [$src[$j], $src[$i]];
}
return $src;
}
echo(implode(",", shuffleArr([0,1,2,3,4,5,6,7,8,9])));
参考にしたサイト
おすすめの記事
最新の記事
よく読まれている記事
タグから探す
- javascript130
- typescript67
- node.js54
- linux54
- 画像処理48
- amazon-aws48
- アルゴリズム37
- canvas35
- html529
- 画像処理100本ノック27
- php24
- centos24
- python22
- 競技プログラミング21
- mac21
- mysql20
- opencv17
- 雑談16
- 機械学習16
- docker16
- wordpress15
- atcoder14
- apache12
- データベース12
- amazon-s312
- red-hat12
- prisma12
- ubuntu11
- github10
- git10
- react10
- mariadb10
- vue.js9
- next.js9
- aws-cdk9
- css38
- 可視化8
- 小ネタ8
- nestjs8
- amazon-lightsail7
- ブログ6
- cms6
- oracle6
- perl6
- gitlab6
- iam5
- amazon-ec25
- 資格試験5
- aws-amplify5
- curl4