Project1

标题: 进一步请教rand(x)的应用 [打印本页]

作者: 灬心魔o    时间: 2011-7-5 17:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2011-7-5 17:16
本帖最后由 精灵使者 于 2011-7-5 17:38 编辑

rand(100) > 44 就是百分比45
case rand(100)
when 0..29
return 3
when 30..89
return 2
else
return 1
end
作者: IamI    时间: 2011-7-5 17:18
本帖最后由 IamI 于 2011-7-5 17:21 编辑


1 可以说是正确的……当然随机数其实是可以规律的 - -||
  1. s = rand(100) # 0~99
  2.   if s < 45  # 0~44 共计45
  3.     # TODO
  4.   end
  5. end
复制代码
问题2提供鬼畜物一枚……如果你这么喜欢1行的话
1 + ((rand(100) < 60) ? ((rand(100) < 50) ? 2 : 1) : 0)
作者: 灬心魔o    时间: 2011-7-5 17:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2011-7-5 17:49
本帖最后由 精灵使者 于 2011-7-5 17:49 编辑

如果重叠的话,就会执行第一个when了的说。
那个问号运算符感觉应该能符合要求
作者: Wind2010    时间: 2011-7-5 17:57
本帖最后由 Wind2010 于 2011-7-5 18:08 编辑

其实LZ想说的是100/190(190分之100)恢复1点MP,60/190恢复2点MP,30/190恢复3点MP吧?
还是说下判定是否30%,是的话恢复3MP,否则判定是否60%,是的话恢复2MP,都不是的话才恢复1MP?


那样的话就是这样
  1. case rand(100+60+30)
  2. when 0..99
  3.   return 1
  4. when 100..59
  5.   return 2
  6. when 160..189
  7.   return 3
  8. end
复制代码
第二种的话是这样:
  1. if rand(100) < 30
  2.   return 3
  3. elsif rand(100) < 60
  4.   return 2
  5. else
  6.   return 1
  7. end
复制代码

作者: 灬心魔o    时间: 2011-7-5 19:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 菜鸟飞呀飞    时间: 2011-7-5 19:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: fux2    时间: 2011-7-5 19:58
[nil,100,60,30].each_index {|i| mp+=i if rand(100)<self[i]}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1