52

Web 上のあらゆる場所 (dart Web サイト、stackoverflow、フォーラムなど) を探していますが、答えが見つかりません。

だから私の問題があります:リストのランダムな並べ替えを出力する関数を書く必要があります。魔女は引数として提供されます。:ダーツでも。

マップ、セット、リストで試します... assertでメソッドを試し、ソートで、dart librabryのMathでランダムメソッドを調べます...やりたいことは何もできません。

誰かがこれで私を助けることができますか?

ここにいくつかのドラフト:

var element03 = query('#exercice03');
  var uneliste03 = {'01':'Jean', '02':'Maximilien', '03':'Brigitte', '04':'Sonia', '05':'Jean-Pierre', '06':'Sandra'};
  var alluneliste03 = new Map.from(uneliste03);
  assert(uneliste03 != alluneliste03);
  print(alluneliste03);

  var ingredients = new Set();
  ingredients.addAll(['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra']);
  var alluneliste03 = new Map.from(ingredients);
  assert(ingredients != alluneliste03);
  //assert(ingredients.length == 4);

  print(ingredients);

  var fruits = <String>['bananas', 'apples', 'oranges'];
  fruits.sort();
  print(fruits);
4

2 に答える 2

148

List クラスにはshuffleメソッドがあります。メソッドはリストをその場でシャッフルします。引数なしで呼び出すか、乱数ジェネレーターのインスタンスを提供できます。

var list = ['a', 'b', 'c', 'd'];

list.shuffle();

print('$list');

collectionパッケージには、shuffleシャッフルするサブ範囲の指定もサポートする関数/拡張機能が付属しています。

void shuffle (
  List list,
  [int start = 0,
  int end]
)
于 2014-05-28T08:04:14.137 に答える
35

これが基本的なshuffle機能です。結果として生じるシャッフルは暗号的に強力ではないことに注意してください。DartのRandomクラスを使用します。これは、暗号化の使用に適さない疑似ランダムデータを生成します。

import 'dart:math';

List shuffle(List items) {
  var random = new Random();

  // Go through all elements.
  for (var i = items.length - 1; i > 0; i--) {

    // Pick a pseudorandom number according to the list length
    var n = random.nextInt(i + 1);

    var temp = items[i];
    items[i] = items[n];
    items[n] = temp;
  }

  return items;
}

main() {
  var items = ['foo', 'bar', 'baz', 'qux'];

  print(shuffle(items));
}
于 2012-11-25T22:28:39.317 に答える