4

私は現在これを行っています:(repeatedly n #(rand-nth (seq coll)))しかし、2つの理由から、より慣用的な方法があるのではないかと思います:

  • 私は、短い匿名関数を使用するよりも簡潔で表現力豊かな代替手段が頻繁にあることを発見しました。partial
  • docstring forrepeatedlyは「おそらく副作用を伴う」と述べており、値を生成するために使用することを意図していないことを暗示しています

使用方法を考え出すことはできると思いますが、遅延ではないreduceため、コレクション全体を処理する必要があるため、それはトリッキーで効率が悪いようです。reduce

4

2 に答える 2

6

簡単な解決策ですが、大きなコレクションには最適ではありません:

(take n (shuffle coll))

要素を繰り返さないという「利点」があります。また、遅延シャッフルを実装することもできますが、より多くのコードが必要になります。

于 2013-08-19T15:07:14.043 に答える