Bonjours, pour les besoins d'un projet personnel je doit générer aléatoirement un nombre donné de coordonnées du style x,y sur une grille de 500*500 (chaque case fait 10*10), mon soucis étant que chaque coordonnée x,y générée ne doit pas déjà avoir été générée auparavant au même coordonnées, je souhaite faire une sorte de random sélectif.
J'ai codé le petit bout de code ci-dessous qui est fonctionnel, cependant si le nombre à générer devient important, php rame, cela est du je pense à ma boucle while, je souhaiterais donc savoir si il existe un moyen plus "propre" de faire cela, merci.
Vous pouvez voir le résultat de la génération actuelle sur ce lien : http://waelin-chatbot.fr/simulation/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 //Nombre de cases générées souhaité $nb = 10; //initialisation du tableau contenant les coordonnées des cases $tab = array(); for($i = 1; $i <= $nb; $i++){ $x = rand(1,50); $y = rand(1,50); $coor = $x.','.$y; $present = true; while($present){ //Si $coor n'est pas présent dans $tab, on sort du while if(!in_array($coor, $tab)){ $present = false; } //Si $present vaut toujours vrai, on régénère des coordonnées //avant de repasser dans le while if($present){ $x = rand(1,50); $y = rand(1,50); $coor = $x.','.$y; } } //Ajout des coordonnées $tab[] = $coor; }
Partager