|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
Bonjour à tous
![]() étant actuellement charger en boulot je n ai pas eu trop le temps de me consacré au forum mais hier soir j ai eu un éclair de génie ![]() ce qui suit permet de choisir un nombre définit de chiffre aléatoire et différent. (donc si ça interesse quelqu'un Code :
|
||
|
|
02
|
|
|
#2 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 323 ![]() |
Bonjour,
utilise in_array() plutôt que ta fonction existeInTab() et d'une façon plus générale, utilise une boucle foreach plutot que for pour itérer sur un tableau ++
__________________
Je ne réponds pas aux questions envoyées par mp |
|
|
10
|
|
|
#3 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
Merci pour le in_array() ça marche bien je perd en traitement =) mais dans ce cas foreach ne sers plus a rien =)
|
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Développeur Inscription : août 2010 Messages : 594 ![]() |
deja pour commencer à mon avis c'est rand(1, 300) et pas round(1, 300) et si tu testes ton script tu verras qu'il boucle à l'infini...
$i est toujours égale à 0 et $i < count($tab) des le premier tour de boucle 0<0 = faux donc $i = 0 et rebelote...éclaire de génie à l'infini, euh je veux dire boucle à l'infini...
__________________
Développeur informatique contrarié... |
|
|
20
|
|
|
#5 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
oui !!! hélas j'ai poster plus vite que mon ombre mon idée est pas mal mais ça boucle infini ......
![]() eh crotte je suis entrint de chercher comment faire pour créer ce petit algo mais je n'y arrive pas .... pour le moment. |
|
|
00
|
|
|
#6 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 484 ![]() |
Il y a de plus des problème de performance dans la logique de ton traitement
1 - boucle while 2 - tu tires un nombre 3 - tu regardes la taille de ton tableau : donc si la taille est bonne, tu as tiré un chiffre pour rien 4 - tu fais une deuxième une vérification de la taille (?) 5 - tu regardes si ce chiffre avait déjà été tiré, si le chiffre a déjà été tiré, tu va recommencer la boucle et donc recompter deux fois la taille du tableau alors qu'elle n'a pas changé. |
|
|
01
|
|
|
#7 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
non ? c'est vrai ? il marche pas tout simplement je pense !
pis tout faut 4 -> $i<count(tab) je t'explique c'est pour éviter de faire un offset |
|
|
00
|
|
|
#8 | |||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
Citation:
Réponse ========================== Code :
|
|||
|
|
00
|
|
|
#9 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 484 ![]() |
Si on veut plus de 15 nombres, on tombe dans une boucle infinie.
|
|
|
01
|
|
|
#10 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
non suffit juste de remplacer 15 par ton max c'est tout
j ai teste avec 300 en max avec un $limite de 25 ça prend un peu de temp mais ça marche très bien ! |
|
|
00
|
|
|
#11 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 484 ![]() |
Certes mais c'est à ton code de prendre en compte ça.
D'ailleurs je ne vois pas a quoi $vardebut, cela ralentit considérablement le traitement. |
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
problème posé : créer un tableau aléatoire sans redondance dans les valeurs.
ne sachant pas a l'avance quel chiffre va tomber et Surtout quel chiffre est tomber $varDebut nous évite du traitements . ainsi on recoupe l'intervalle de valeur aléatoire. par exemple : au depart $vardebut prend 4 donc 4 est tomber et il ne dois plus retomber donc rand prendera intervalle (4,15) comme ça on est a peu prés sure de pas l'avoir. $vardeubt prend ensuite 8 donc 8 est tomber et il ne dois plus retomber donc rand prendera intervalle (8,15) comme ça on est a peu prés sure de pas l'avoir. ainsi de suite . mais si tu as mieu pour répondre a ce problème envoie le code =) |
|
|
00
|
|
|
#13 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 484 ![]() |
Tu fausses le hasard.
exemple mon premier tirage est 13, mon second sera obligatoirement 14 ou 15 ; et si c'est 14, je suis sur de sortir le 15. Sur 5000 tirage j'ai sorti 95% de fois le 15. Le hasard fait déjà bien les choses et le script est plus performant. |
|
|
01
|
|
|
#14 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
dans le tableau car MainHasard () retourne un tableau tu as combien de fois 15
faut pas faire gaffe au truc qui s'affiche. pis n'oublie pas la condition dans GenerateHasard() on peut revenir en arrière. et si c'etait pas ça le hasard =) . |
|
|
00
|
|
|
#15 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 323 ![]() |
Bonjour,
y'a plus simple quand même Code php :
__________________
Je ne réponds pas aux questions envoyées par mp |
||
|
|
10
|
|
|
#16 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
j'ai essayer les deux ! c'est kiffe kiffe mais ta version est pas mal car dans ta fonction on peut choisir le depart et tout.
bien jouer mec ! ![]() j'applaudit la performance =) |
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 323 ![]() |
Je te donne même le droit de l'utiliser sans me citer
PS: y'a surement moyen de l'optimiser, j'ai pas cherché
__________________
Je ne réponds pas aux questions envoyées par mp |
|
|
10
|
|
|
#18 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2011 Messages : 53 ![]() |
|
|
|
00
|
|
|
#19 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 16 484 ![]() |
Elle ne fonctionne pas bien puisque les sorties ne sont pas uniformes.
Ce n'est pas du vrai hasard. |
|
|
00
|
|
|
#20 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 958 ![]() |
y'a plus simple quand même
Code :
__________________
http://blog.stealth35.com/ |
||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com