作者Schelfaniel (Schelfaniel)
看板Ruby
标题Re: [问题] 如何设定一个会变动的Parameter
时间Sun Jun 21 19:54:22 2009
※ 引述《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)
1F:→ godfat:你又来了.... 这样我很为难耶 XD 06/21 21:17
2F:→ Schelfaniel:就当闲聊文?? 06/21 21:47