##Flutter(Dart)で重複のない乱数を生成する
「ダステンフェルドのアルゴリズム」とか「フィッシャーイェーツのシャッフル」と言われているランダムシャッフル処理です。
[1,2,3,4,5] => [3,5,2,1,4] のような感じ
import 'dart:math';
class NumberShuffle {
final rand = new Random();
List<int> getShuffleList(int inputNum) {
//順に格納された配列を用意
List<int> list = List.generate(inputNum, (index) => index);
for (int rest = inputNum - 1; rest >= 0; rest--) {
//ランダムに選択
int selectIndex = rand.nextInt(rest + 1);
//一番最後と入れ替え
int temp = list[selectIndex];
list[selectIndex] = list[rest];
list[rest] = temp;
}
return list;
}
}
もしかしてライブラリがあったら教えていただけるとうれしいです。
##追記
これだけのことでしたね。
var list = [1,2,3,4,5];
list.shuffle();
print(list);
ライブラリではなかった…