Hello; j'essaie de programmer un petit concours...
Les données de bases sont :
-5% de chances de gagner
-451 lots (nombre variable de lots)
J'ai trouvé une fonction de probabilité de laquelle je suis parti :
Mon idée était d'abord de regarder si j'avais gagné (5% de chances donc) puis de choisir un lot en fonction de leur quantité (et donc de leur probabilité de gain).
Mais j'ai deux problèmes, ou plutôt, une question et un problème :
1)est ce que ma démarche est correcte (calculer si l'on a gagné puis définir le lot en fonction des probabilités de gains) : se peut-il que l'on "gagne" au premier tour et puis qu'aucun lot ne soit défini lors du second calcul de probabilités ?
2) : il me retourne "Fatal error: Using $this when not in object context in F:\web\contest.php" pour la ligne
Je sais, c'est une erreur récurrente; mais je n'ai pas trouvé la solution... J'ai toujours programmé mes classes de cette manière (sous wordpress en tout cas) et ça a toujours fonctionné...
Voici la classe :
merci pour votre aide !
Les données de bases sont :
-5% de chances de gagner
-451 lots (nombre variable de lots)
J'ai trouvé une fonction de probabilité de laquelle je suis parti :
function probability($chance, $out_of = 100) {
$random = mt_rand(1, $out_of);
return $random <= $chance;
}
Mon idée était d'abord de regarder si j'avais gagné (5% de chances donc) puis de choisir un lot en fonction de leur quantité (et donc de leur probabilité de gain).
Mais j'ai deux problèmes, ou plutôt, une question et un problème :
1)est ce que ma démarche est correcte (calculer si l'on a gagné puis définir le lot en fonction des probabilités de gains) : se peut-il que l'on "gagne" au premier tour et puis qu'aucun lot ne soit défini lors du second calcul de probabilités ?
2) : il me retourne "Fatal error: Using $this when not in object context in F:\web\contest.php" pour la ligne
if (!self::probability($this->main_probability)) return false;
Je sais, c'est une erreur récurrente; mais je n'ai pas trouvé la solution... J'ai toujours programmé mes classes de cette manière (sous wordpress en tout cas) et ça a toujours fonctionné...
Voici la classe :
Class Contest {
var $main_probability;
var $prizes_1;
var $prizes_2;
var $prizes_3;
var $prizes_4;
var $prizes_total;
function Contest() {
$this->__construct();
}
function __construct() {
$this->main_probability = 5;
$this->prizes_1 = 300;
$this->prizes_2 = 100;
$this->prizes_3 = 50;
$this->prizes_4 = 1;
$this->prizes_total = $this->prizes_1 + $this->prizes_2 + $this->prizes_3 + $this->prizes_4;
}
function probability($chance, $out_of = 100) {
$random = mt_rand(1, $out_of);
return $random <= $chance;
}
function win_prize() {
if (!$this->probability($this->main_probability)) return false; // 5% chance
if (probability($this->prizes_1,$this->prizes_total))
return '1';
if (probability($this->prizes_2,$this->prizes_total))
return '2';
if (probability($this->prizes_3,$this->prizes_total))
return '3';
if (probability($this->prizes_4,$this->prizes_total))
return '4';
}
}
$contest = new Contest();
print_r($contest::win_prize());
merci pour votre aide !