Project1

标题: 关于odds 职业受袭率的计算公式 [打印本页]

作者: wangswz    时间: 2010-8-24 14:10
标题: 关于odds 职业受袭率的计算公式
本帖最后由 wangswz 于 2010-8-24 14:23 编辑

  #--------------------------------------------------------------------------
  # ● 随机目标选择
  #--------------------------------------------------------------------------
  def random_target
    roulette = []
    for member in existing_members
      member.odds.times do
        roulette.push(member)
      end
    end
    return roulette.size > 0 ? roulette[rand(roulette.size)] : nil
  end
怎么计算受袭率的?
do循环。。
谁越大几率越高??大概4人的情况下1点等于多少几率?完全被这段代码镇住了。
作者: DeathKing    时间: 2010-8-24 14:14
rand(roulette.size),每个人的几率均等 0_0

4.times do |i|
  p i
end

#=> this is out put
0
1
2
3
(4 times)
作者: 八云紫    时间: 2010-8-24 14:18
本帖最后由 八云紫 于 2010-8-24 14:23 编辑

position
职业的战斗位置。(0:队列前、1:队列中、2:队列后)。

odds = 4 - position

odds 等于多少就压入角色多少次,然后随机抽取一个~~


类似提高地图上某个队伍的敌人随机遇到的概率一样的做法~~~多次压入数组,被抽到的概率也就越大~~~

例如:

[ 1, 2 , 3, 4]  四个数字的随机抽取的概率是一样的,都是 25%

[ 1, 1, 2 , 3, 4] 四个数字的随机抽取的概率就不一样了,2 , 3, 4 都是 20% ,但是 1 是 40%
作者: DeathKing    时间: 2010-8-24 14:25
times貌似是Fixnum提供的方法:
  1. root@deathking-desktop:/etc/apt# irb
  2. irb(main):001:0> Integer.instance_methods.include? :times
  3. => false
  4. irb(main):002:0> Fixnum.instance_methods.include? :times
  5. => false
  6. # 囧,上面完全是我把我的ruby当1.9.1了
  7. irb(main):003:0> Fixnum.instance_methods.include? "times"
  8. => true
复制代码
times就是循环的次数。

2.times 差不多就是for i in 0..1 的意思。




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