2012-03-29 63 views
0

我在競選分裂測試着陸頁目前它們發送到下面的腳本:簡單的加權鏈接旋轉?

$link[] = "http://www.website.com/lp1"; 
$link[] = "http://www.website.com/lp2"; 

$random_number = rand(0,count($link)-1); 
$redirectlink = $link[$random_number]; 

header("Location: $redirectlink"); 

如果我想有顯示的75%的時間在第一LP,我怎麼去這樣做?將簡單地複製第一個鏈接兩次,還是有更好的方法去解決它?

+0

「我想有第一LP出的75%的時間。」這不是加權的。這是一個保證。 – webbiedave 2012-03-29 21:48:04

+0

[加權隨機數](http://stackoverflow.com/questions/1761626/weighted-random-numbers)可能的重複。提出的解決方案與語言無關。 – webbiedave 2012-03-29 21:48:16

+0

[在PHP中通過權重生成隨機結果?](http://stackoverflow.com/questions/445235/generating-random-results-by-weight-in-php) – 2012-10-20 07:08:46

回答

1

也許還有更多更好的方法,但這是工作壓力太大

$link[0] = array('link' => 'http://example.com/1', 'percent' => 7); 
$link[1] = array('link' => 'http://example.com/2', 'percent' => 20); 
$link[2] = array('link' => 'http://example.com/3', 'percent' => 73); 

$percent_arr = array(); 
foreach($link as $k => $_l) { 
    $percent_arr = array_merge($percent_arr, array_fill(0, $_l['percent'], $k)); 
} 

$random_key = $percent_arr[mt_rand(0,count($percent_arr)-1)]; 
$redirectlink = $link[$random_key]['link']; 

header("Location: $redirectlink");