0
我編寫gen-sim-map函數的方式有些不對。它會在一個帳號後停止,並在向量中最後一個數字。我想知道我做錯了什麼。我可以通過對該函數應用重複來解決問題,但這對我來說似乎是錯誤的。爲什麼在一個賬號之後減少停止?
這裏是數據和調用;函數defs在下面。
(def acct-nums (gen-acct-nums 5))
#'ba1-app/acct-nums
ba1-app=> acct-nums
[10000 10001 10002 10003 10004 10005]
ba1-app=> (gen-sim-map acct-nums)
{10005 [\W 160.12]}
(defn random-trans
[]
(nth avail-trans (.nextInt random (count avail-trans))))
(defn random-amount
[]
(float (/ (.nextInt random (count (range 1 10000))) 25)))
; Generate an account number. The range is arbitrary to make it look a real bank account #.
(defn gen-acct-nums [range-end-idx]
(vec (range 10000 (+ 10000 range-end-idx 1))))
(defn gen-sim-map [acct-nums]
(reduce
(fn [sim-map one-acct-num]
(let [trans (random-trans)
amt (random-amount)]
{ one-acct-num (vector trans amt) }))
{}
acct-nums))
我沒有看到你在哪裏改變累加器('sim-map')的任何地方。 – 2011-12-17 20:11:45
是的,我忘記了,這就是爲什麼我看到了最後的價值,對吧?其他人被處理但沒有積累? – octopusgrabbus 2011-12-17 20:13:03