2012-03-29 7 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を持っていると思った場合、どのように私はそれをやって行くのですか?最初のリンクを2回複製するだけですか、それとももっと良い方法がありますか?

+0

取り組んでいる「私は、時間の75%を示した最初のLPを持っていると思いました。」それは重み付けされていません。それは保証です。 – webbiedave

+0

[Weighted random numbers]の重複が可能です(http://stackoverflow.com/questions/1761626/weighted-random-numbers)。提示されるソリューションは、言語に依存しません。 – webbiedave

+0

[PHPでの重み付けによるランダムな結果の生成?](http://stackoverflow.com/questions/445235/generating-random-results-by-weight-in-php) –

答えて

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"); 
関連する問題