2010-10-21 5 views
2

Je suis en train de coder un projet qui génère deux tableaux contenant des données. Un tableau contient des données pour un pays spécifique et l'autre contient des données pour tous les pays. Par exemple, si un utilisateur des États-Unis fait une demande, nous allons générer deux tableaux avec des données. Un avec des données uniquement pour les États-Unis et l'autre avec des données pour le monde entier, y compris les États-Unis. Je veux donner au tableau américain 60% de chances d'être sélectionné si le visiteur vient des États-Unis. Cela signifie que l'autre tableau aura 40% de chances d'être sélectionné.Algorithme pour sélectionner 1 sur 2 éléments basés sur la probabilité

Comment est-ce qu'on code ceci ??

Répondre

7
if(rand(1, 100) <= $probability_for_first_array) 
{ 
    use_the($first_array); 
} 
else 
{ 
    use_the($second_array); 
} 

Je trouve cela un simple, facile à lire solution

3
<?php 

$us_data = "us"; 
$worldwide_data = "worldwide"; 

$probabilities = array($us_data => 0.60, $worldwide_data => 0.40); 

/* Code courtesy of Jesse Farmer 
* For more details see http://goo.gl/fzq5 
*/ 
function get_data($prob) 
{ 
$random = mt_rand(0, 1000); 
$offset = 0; 
foreach ($prob as $key => $probability) 
{ 
    $offset += $probability * 1000; 
    if ($random <= $offset) 
    { 
    return $key; 
    } 
} 
} 

?> 

exemple de Gabi est très bien pour deux ensembles, mais si vous avez plus d'ensembles de données à choisir, la structure if-else est pas approprié.

Questions connexes