繁体   English   中英

性能/红宝石/铁路/数据库问题

[英]performance/ruby/rails/db question

我正在创建一个在线博彩赔率比较网站,并且想知道如何计算Ruby / Rails中的最佳赔率。

我有两个模型:比赛和赔率

Fixture有主场和客场球队,赔率模型有庄家ID,主场赔率,平局赔率和客场赔率。

我有一些选择只将选定的灯具/团队存储在数据库中。

我正在考虑以这种方式创建一个由不同庄家组成的多维数组,然后添加fixture_id和1,2或3进行主页/抽签/ fixture_id牌,然后将其用作添加赔率的关键

odds[bookmaker][fixture][1/2/3] = price然后加总odds = count(odds[bookmaker][fixture][1/2/3])

有更容易的方法吗? 也许在数据库中做?

在不考虑性能的情况下-可能不是问题,无论如何,我们不应该针对性能进行优化,直到我们知道存在问题-我要说您可能会引入Bookmaker模型(如果只是为了存储名称)并开始制作使用ActiveRecord关联。 我还将考虑将赔率分为三个单独的结果类型,这可能会更加灵活,特别是如果您以后要添加更多的赌注。 您可能会得到类似:

class Bookmaker < ActiveRecord::Base
  has_many :odds
end

class Odd < ActiveRecord::Base # good name? Price is almost as common and less likely to be misinterpreted
  belongs_to :fixture
  belongs_to :bookmaker
  # let's assume we use result type = 1/2/3 or maybe :home/:draw/:away
end

class Fixture < ActiveRecord::Base
  has_many :odds
end

您想要做的是为所有在该固定装置上定价的商品(或“综合”)中的每个结果计算最佳价格。 如果小于100%,则存在潜在套利。

class Odd
  named_scope :for_result, lambda { |res_tp| {:conditions => ['type = ?', res_tp]}}
end

class Fixture
  def best_price(res_type)
    # assumes you have odds stored as a percentage
    odds.for_result(res_type).minimum(:pctage)
  end
  def overround
    [:home, :away, :draw].inject(0.0){|sum, res_tp| sum + best_price(res_tp)}
  end
end

我敢保证上面的数据不完全适合您的数据,但是它可能会给您一个思路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM