Re: [問題] 如何設定一個會變動的Parameter
※ 引述《makoto63215 (隱匿的老頭)》之銘言:
: ※ 引述《makoto63215 (隱匿的老頭)》之銘言:
: : 環境:
: 抱歉 的確說得不清楚
: 下面這些程式碼是要模擬一個假想情況:
: 在一個邊長2公里的正方形空地,亂數分佈100個人
: 每個人身上都有一個ID供辨認,然後每個人一開始都帶有固定的能量
: 然後每一次每個人動作不同,
: 動作有站著不動2分鐘,原地跑步2分鐘,青蛙跳20下,伏地挺身20下..等
: 所以每個人每次消耗的能量也不一樣 根據下面的if敘述來決定做哪一種動作
: 我的用意就是要設定一個變數 找出每一次每個人身上所剩餘的能量
: 那個變數名稱是Capacity_cur
說實在我看不懂,不過我猜一下,以下程式是 clojure 就是了。
你看一下和你目前需要的差多少....
(def *initial-capacity* 40000)
(defn make-playground [size]
(reduce (fn [prev id] (assoc prev id {:id id
:capacity *initial-capacity*}))
{} (reverse (range size))))
(defn new-capacity [playground]
; 這邊計算公式先用 0 - 999 亂數 來算 capacity 的消耗
(let [old-capacity (:capacity playground)
new-capacity (- old-capacity (rand-int 1000))]
(printf "No %d, old-capacity %d, new-capacity %d\n" (:id playground)
old-capacity new-capacity)
new-capacity))
(defn simulate-playground [max-round size]
(loop [playground (make-playground size), round 1]
(when (<= round max-round)
(printf "Round %d\n" round)
(recur (reduce (fn [prev curr] (assoc-in prev [curr :capacity]
(new-capacity (get prev curr))))
playground (keys playground))
(inc round)))))
執行結果,以 4 回合 4 個人來看
user=> (simulate-playground 4 4)
Round 1
No 0, old-capacity 40000, new-capacity 39836
No 1, old-capacity 40000, new-capacity 39529
No 2, old-capacity 40000, new-capacity 39007
No 3, old-capacity 40000, new-capacity 39011
Round 2
No 0, old-capacity 39836, new-capacity 39032
No 1, old-capacity 39529, new-capacity 39137
No 2, old-capacity 39007, new-capacity 38351
No 3, old-capacity 39011, new-capacity 38935
Round 3
No 0, old-capacity 39032, new-capacity 38196
No 1, old-capacity 39137, new-capacity 38274
No 2, old-capacity 38351, new-capacity 37617
No 3, old-capacity 38935, new-capacity 38610
Round 4
No 0, old-capacity 38196, new-capacity 38195
No 1, old-capacity 38274, new-capacity 37643
No 2, old-capacity 37617, new-capacity 36654
No 3, old-capacity 38610, new-capacity 38197
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.74.159
※ 編輯: Schelfaniel 來自: 114.32.74.159 (06/21 19:59)
→
06/21 21:17, , 1F
06/21 21:17, 1F
→
06/21 21:47, , 2F
06/21 21:47, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章