{-1,1} からランダムな値を引き出す、ランダム ウォーク用の次のコードを作成しました。
(defn notahappyfoo [n]
(reverse (butlast (butlast (reverse (interleave (take n (iterate rand (- 0 1)))(take n (iterate rand 1))))))))
ただし、コードは満足のいく歩行を生成できません。主な問題は関数 rand に由来します。下限が 0 であるため、私が書いた厄介なコードが強制されました。つまり、関数インターリーブは、値が正から負に強制的に変動するため、ウォークに大きなシフトを引き起こします。このコードでは、連続したパスの感覚をつかむのは難しいでしょう。
Clojure には、このウォークを構築するためのエレガントなフォームが必要だと思います。しかし、そのような歩行を生成するために適切な関数を組み合わせることができません。私が構築しようとしている関数の目標は、乱数の下限と上限で構成されています。上記のコードでは、間隔を強制的に -1 から 1 にしています。これを -a と a に一般化するとよいでしょう。さらに、連続性の概念を持つ a と a の間のランダムな実数 (浮動小数点) のコレクションを形成するにはどうすればよいですか?