par
Ryle » 31 mai 2021, 14:29
Salutations !
Tout dépend de ton contexte et de ce que tu veux faire. PHP ne propose pas nativement de fonction de tirage aléatoire sans remise, il te faut la développer. Le principe est néanmoins simple : à chaque fois que tu détermine un élément au hasard, il faut le retirer du pool (et enregistrer le nouveau pool pour pouvoir utiliser celui-ci pour le prochain tirage).
Quant à l'utilisation de session, de cookie, de base de données... pour l'enregistrer, et bien tout va dépendre de ton contexte... est-ce le même utilisateur qui tire plusieurs fois ? est-ce plusieurs utilisateurs distincts qui tirent à tour de rôle ? est-ce que l'utilisateur fait tout ses tirages à la suite ou un tirage par jour ? ...
Sans info sur le contexte c'est difficile d'apporter une réponse plus précise. Le fait est que quelle que soit la solution, c'est à toi de retirer l'élément déjà généré.
Autre solution - là encore selon le contexte - tu ne changes jamais le pool, mais tu refais le tirage tant que le tirage retourne une valeur déjà sortie, mais c'est clairement la solution la moins optimisée.
Salutations !
Tout dépend de ton contexte et de ce que tu veux faire. PHP ne propose pas nativement de fonction de tirage aléatoire sans remise, il te faut la développer. Le principe est néanmoins simple : à chaque fois que tu détermine un élément au hasard, il faut le retirer du pool (et enregistrer le nouveau pool pour pouvoir utiliser celui-ci pour le prochain tirage).
Quant à l'utilisation de session, de cookie, de base de données... pour l'enregistrer, et bien tout va dépendre de ton contexte... est-ce le même utilisateur qui tire plusieurs fois ? est-ce plusieurs utilisateurs distincts qui tirent à tour de rôle ? est-ce que l'utilisateur fait tout ses tirages à la suite ou un tirage par jour ? ...
Sans info sur le contexte c'est difficile d'apporter une réponse plus précise. Le fait est que quelle que soit la solution, c'est à toi de retirer l'élément déjà généré.
Autre solution - là encore selon le contexte - tu ne changes jamais le pool, mais tu refais le tirage tant que le tirage retourne une valeur déjà sortie, mais c'est clairement la solution la moins optimisée.