Je suis sur le point de créer un script qui choisit un gagnant pour ma loterie. La quantité de billets est choisie par suivant: J'ai fait cela, ce qui me donne le numéro de billet gagnant, mais je ne peux pas obtenir l'utilisateur gagnant : p> j'ai des lignes comme ceci: p> Si c'est possible, je voudrais le garder comme ça et ne pas avoir 1000 lignes dans la base de données avec chaque billet. p> p> montant de l'argent * 100 code> SO $ 1.26 = 126 billets.
4 Réponses :
Vous pouvez utiliser ce code:
J'ai essayé var_dump (getwinnerPlayer ($ joueurs)); code>, mais il renvoie juste null code>
J'ai ajouté maintenant un var_dump () dans le code, pouvez-vous essayer maintenant et coller le résultat?
Cela montre simplement la quantité différente des joueurs déposés.
Désolé, j'ai mis à jour le code avec un peu de changement de variable dans la deuxième boucle. Pouvez-vous essayer maintenant s'il vous plaît? (Vous pouvez également supprimer le var_dump)
Voici un pseudo code qui peut aider à attirer la loterie au hasard et à identifier le gagnant. La meilleure approche dans ce cas de multiples numéros puisque vous utilisez pour Acheach est d'utiliser des tableaux. Donc, dans le code ci-dessous
<?php
//Array that holds the players
$players[] =0;
//Run this loop from 0 until how many tickets were issued
for($i=0; $i<100; $i++){
$players[$i] = $i * 100;
}
//Choosing the randomly winning ticket
$winningTicket = array_rand($players, 1);
//what ticket number won the lottery, (var_dump to be able to see the output)
echo "Winning Number = ".$players[$winningTicket]."<br/>";;
//Who won the lottery, (var_dump to be able to see the output)
echo "Winning Person = Person No.".$winningTicket;
?>
Désolé mais dans votre code, tous les joueurs ont la même oportumité à gagner et la question indique que tous les joueurs ont un certain nombre de billets égaux au montant payé * 100. Vous avez également une limite de 100 joueurs pour une raison quelconque.
Il génère: int (68) int (6800) code> et cela ne m'aide pas vraiment à trouver le joueur qui a gagné.
Il y a aussi 2 autres choses dans cette réponse. 1-> pseudo code. 2. Le commentaire ci-dessus 100 mentionne, exécutez cette boucle jusqu'au nombre de billets émis. Je ne sais pas quelle est la méthode d'entrée.
@ Sørenefa a mis à jour le code pour que vous obteniez des commentaires clairs au lieu de décharges. Semble comme une nouvelle introduction de Var_Dump à vous.
Je pense à garder votre idée de chiffres au lieu d'apporter une matrice.
Je vais que les joueurs détiennent leurs positions de billetterie (début / fin). Lorsque je choisis un billet au hasard, je vais voir si mon numéro est à l'intérieur de leurs limites et que si c'est le cas, j'ai trouvé le gagnant. P> aussi < / p> sortie : Dave gagne la plupart du temps car il a 1 000 billets, sur les deux autres joueurs qui ont seulement 400 combiné. p> p> Dave code > P>
C'est surcharger des choses, et vous n'avez même pas évité d'avoir à itérer les joueurs deux fois.
Fonctionne parfaitement. Merci!
@Havenard J'ai mis à jour mon code pour éviter de boucler deux fois par les joueurs. Et bien sûr, j'ai utilisé cette méthode pour éviter de créer une matrice avec une taille énorme. (Imaginez 100 billets par personne et 10 000 personnes, la taille de la matrice ne serait pas évolutive) mais un nombre énorme doit être correct pour PHP à gérer.
@Davechen Le point est, puisque vous êtes itération deux fois, rien à créer de ces classes. Voir La réponse d'Oscargeek . Je n'ai pas posté de réponse parce que je devais sortir, mais je ferais quelque chose d'aproxumé à sa solution.
- pas de PHP requis, juste mysql. Pas de folle rangée juste 12 dans cet exemple.
Alors, comment attribuez-vous des numéros de billet? Est-il basé sur l'ordre des joueurs, tel que le joueur 1 sur ce cas a des billets n ° 1 - # 125?
C'est aléatoire en ce moment ..
Hey Exécutant ce script ci-dessus a donné un avertissement sur la boucle pour. AVERTISSEMENT: argument non valide fourni pour Foreach () en ligne 4. Ne savez pas pourquoi vous avez cette partie $ joueur-> DépôtValue * 100?
@ pal4life il provient d'une requête MySQL, afin que je puisse obtenir la somme d'argent déposée ..
S'il vous plaît n'utilisez pas
rand () code> pour cela. Jetez un coup d'œil à php.net/manual/fr/funcunction.random-int. php à la place@RJDown et comment vais-je avoir le joueur?
Utilisez un tableau pondéré comme vous avez décrit. Voici un exemple Stackoverflow.com/ Questions / 445235 / ... mais substitut
mt_rand code> pouraléatoire_int code>REF Une réponse ci-dessous, note également que
array_rand code> utilise la même bibliothèque (plutôt pauvre) commerand code>, alors s'il vous plaît n'utilisez pas non plus si vous voulez des résultats équitables.@RJDown existe-t-il un substitut à des matrices aléatoires?
Pas spécifiquement, mais vous pouvez simplement faire
$ Array [Random_int (1, Count ($ TRAY))] code> Je suppose