假设我们有如下页面及其服务的权重:
Suppose we have following pages and their serving weightage:
Page1 50%
Page2 20%
Page3 15%
Page4 15%
什么是一个简单的公式来服务基于其权重的网页?我使用的红宝石。
What would be a simple formula to serve pages based on their weightage? I am using Ruby.
编辑:
下面是我如何想的。
actual_pct = Weightage
tot_hits = Total hits against the URL
served_pct = Served percentage for each page based on tot_hits
served_to_actual_pct = served_pct x 100 / actual_pct
上面会给我与他们的 served_to_actual_pct
页的数组。让我们假设我将服务根据其创建时间戳
否供应又或者多个页面具有相同的时候,页面 served_to_actual_pct
。基于这种假设,我可以进行排序在这个阵列上创建时间戳
,然后在 served_to_actual_pct
。在这一点上的阵列中的第一页将要被服务的页面。
Above will give me an array of pages with their served_to_actual_pct
. Lets suppose I would be serving the pages based on their create timestamp
when no page is served yet or more than one pages have the same served_to_actual_pct
. Based on this assumption I can sort this array on create timestamp
and then on served_to_actual_pct
. At this point the first page in the array would be the page to be served.
我将不胜AP preciate任何帮助,意见或微调以上。
I would greatly appreciate any help, comments or fine tuning to above.
你需要的是一个加权的样本:
What you need is a weighted sample:
class Hash
def weighted_sample
target = rand * self.values.reduce(:+)
key, weight = self.detect{ |key, weight| target -= weight; target < 0 }
return key
end
end
只要你想与它们的重量值的哈希键添加多页。然后调用 your_hash.weighted_sample
。键数值越高会拿出较多。
Add as many pages as you want as the keys of a hash with their weights as the value. Then call your_hash.weighted_sample
. Keys with higher values will come up more often.
下一篇:检测图中周期图中、周期