我在考慮如何使用銷售完成數據庫來影響分割測試。加權分割測試
例如,假設我有四個不同的頁面佈局和每個我有以下數據:
- 版本1:6周的銷售,
- 版本2:1銷售,
- 第3版: 3個銷售,
- 版本4:4周的銷售,
然後,它將使意義版1所示經常有,而第4版是下一個,而版本2應該幾乎不顯示。
任何想法,我可以如何實現這一點?
我在考慮如何使用銷售完成數據庫來影響分割測試。加權分割測試
例如,假設我有四個不同的頁面佈局和每個我有以下數據:
然後,它將使意義版1所示經常有,而第4版是下一個,而版本2應該幾乎不顯示。
任何想法,我可以如何實現這一點?
非常簡單的解決方案,主要取決於您的數據當前的表現如何,儘管解決方案最簡單。
$sales = array
(
1 => 6,
2 => 1,
3 => 3,
4 => 4
);
$weight = array();
foreach ($sales AS $layout => $num_sales)
{
for ($i = 0; $i < $num_sales; $i++)
{
$weight[] = $layout;
}
}
/*
$weight = array
(
1, 1, 1, 1, 1, 1,
2,
3, 3, 3,
4, 4, 4, 4
);
*/
// Pick a random one to use
$layout_to_use = $weight[rand(0, count($weight))];
比方說,你有以下的重量顯示佈局:
重量Version 1: 6
Version 4: 4
Version 3: 3
Version 2: 1
總和爲14,體重6意味着你要展示網頁約6倍的14個請求。
如果您正在使用的數據庫(我假設你做這將是)
SELECT SUM(weights) FROM version;
最簡單的方式來實現與擊球項目的不同概率隨機選擇是總結的權重,排序權重,比項目只是迭代槽的所有項目,直到你打零:
$i = rand(1, $sum);
foreach($items as $item){
$i -= $item->weight;
if($i <= 0){
break;
}
}
// $item is now your desired $item
$items
應該排序class Item{ public $weight; ... }
名單,因爲它是最有可能的是,第一的Elemen T將使用(第二第二等)和至少迭代將需要
發生了什麼事裏面:
$i = 12;
// first iteration, $weight = 6
$i = 6; // condition didn't match
// second iteration, $weight = 4
$i = 2; // condition didn't match
// third iteration, $weight = 3
$i = -1; // condition matched
// using version 3