作者godfat (godfat 真常)
看板Ruby
标题Re: [问题] 如何设定一个会变动的Parameter
时间Sun Jun 21 14:06:27 2009
※ 引述《makoto63215 (隐匿的老头)》之铭言:
: : 环境:
: : e.g. Ruby 1.8.6 OS:Windows XP
: 抱歉 的确说得不清楚
: 下面这些程式码是要模拟一个假想情况:
: 在一个边长2公里的正方形空地,乱数分布100个人
: 每个人身上都有一个ID供辨认,然後每个人一开始都带有固定的能量
: 然後每一次每个人动作不同,
: 动作有站着不动2分钟,原地跑步2分钟,青蛙跳20下,伏地挺身20下..等
: 所以每个人每次消耗的能量也不一样 根据下面的if叙述来决定做哪一种动作
: 我的用意就是要设定一个变数 找出每一次每个人身上所剩余的能量
: 那个变数名称是Capacity_cur
这段我看懂了,除了最後一段,一个变数要怎麽存每一次每个人身上的剩余能量?
假设你想用 hash, 格式是 id => capacity, 那麽来看下面的程式
: 下面是修正的程式码
: : module Arc
: : InitialCapacity = 40000
: : end
: : Class XXX
: : include Arc
: : attr_accessor :capacity
: : def initialize()
: : @capacity = Arc::InitialCapacity
: : @ID = id
: @site = site
: : end
: : end
: srt = 0.67
: srand(0)
: total = 100
: : 50.times {
: : mebers = Array.new(total){|| XXX.new([(rand*50),(rand*50)] ) }
: : Capacity_cur = {"mebers.ID"=>"mebers.capacity"}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: : Dis = Capacity_cur*srt
^^^^^^^^^^^^^^^^
你这样是拿 hash 去乘 0.67, 当然不可能对。你实际程式我猜不是这样写的?
但我猜不到你原本程式怎麽写的...
: : if .................
: : .................
: : elseif .............
^^^^^^ 应为 elsif
: : .............
: : else .............
: : .............
: : end
: : }
: ps:先前想的杂凑,如果不在Capacity_cur後方加上 to_f ,就会产生下面的讯息:
: in '*': String can't be coerced into Float(TypeError)
: 我的解读是 Capacity_cur的值,被当作是字串,所以不能跟浮点数相乘
: 但是加上 to_f後,就没有跑出任何讯息了
: 我觉得Capacity_cur後面加上to_f,判定值为0
hash 也不能 to_f, 这边跟你的文字描述接不上了
--
In Lisp, you don't just write your program down toward the language,
you also build the language up toward your program.
《Programming Bottom-Up》- Paul Graham 1993
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18