begin process at 2012 05 30 20:52:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Fonction aléatoire sur tableaux


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fonction aléatoire sur tableaux

mardi 21 juin 2011 à 15:53:19 | Fonction aléatoire sur tableaux

asdr

Bonjour,

Je travail en ce moment sur une fonction permettant de choisir 2 nombres aléatoirement dans un tableau de valeurs définies, sachant que le deuxième nombre doit être différent du premier et qu'il ne doit jamais avoir été tiré en même temps que le premier (pour cela je parcours un deuxième tableau de valeurs).

Je suis dessus depuis plusieurs jours et je dois avouer que je bloque ... surtout sur la logique.

Voici mon code simplifié :

Code PHP :
<?php
$tableau_valeurs = array(24 => 32, 32 => 24.39);
$tableau_valeurs_2 = array(1 => 24, 2 => 32, 3 =>39);
$nombres_elements = 3;
$i = 0;

$chiffre_aleatoire_1 = array_rand ($tableau_valeurs_2, 1);
$chiffre_aleatoire_2 = array_rand ($tableau_valeurs_2, 1);

if (isset($tableau_valeurs[$tableau_valeurs_2[$chiffre_aleatoire_1]])){
	$tableau_valeurs_separes = explode ('.', $tableau_valeurs[$tableau_valeurs_2[$chiffre_aleatoire_1]]);
	$nombre_valeurs_separes = count ($tableau_valeurs_separes);
	while (($i == 0)||($chiffre_aleatoire_2 == $chiffre_aleatoire_1)){
		for ($j = 0; $j <= $nombre_valeurs_separes; $j++){
			if ($tableau_valeurs_2[$chiffre_aleatoire_2] == $tableau_valeurs_separes[$j]){
				break;
			}
			if (($j == $nombre_valeurs_separes)&&($chiffre_aleatoire_2 != $tableau_valeurs_separes[$j])){
				$i = 1;
			}
		}
		if ($chiffre_aleatoire_2 < $nombres_elements){
			$chiffre_aleatoire_2 = $chiffre_aleatoire_2 + 1;
		}
		else{
			$chiffre_aleatoire_2 = 1;
			if($chiffre_aleatoire_2 == $chiffre_aleatoire_1){
				$chiffre_aleatoire_2 = $chiffre_aleatoire_2 + 1;
			}
		}
	}
}
echo 'chiffre aleatoire 1 :'.$tableau_valeurs_2[$chiffre_aleatoire_1];
echo '<br />chiffre aleatoire 2 :'.$tableau_valeurs_2[$chiffre_aleatoire_2];
?>


Qu'en pensez-vous ?
Sachant que la fonction me renvoi régulièrement deux messages d'erreurs pour des offsets indéfinis, et que parfois les deux nombres sont les mêmes !
mardi 21 juin 2011 à 16:41:20 | Re : Fonction aléatoire sur tableaux

JulSoft

Membre Club
Une méthode qui marche pas mal pour ce genre de choses est de faire des permutations aléatoires sur ton tableau puis de prendre les indices dans l'ordre...

en gros (code pas testé, mais pour l'idée):
Code PHP :
function nombreAleatoire($tableau){
   static $n = 0;
   for($i=0;$i<1000;$i++){
      $a = rand(0,count($tableau)-1);
      $b = rand(0,count($tableau)-1);
      $t = tableau[$a];
      $tableau[$a] = $tableau[$b];
      $tableau[$b] = $t;
   }
   return $tableau[$n++];
}
mardi 21 juin 2011 à 17:00:25 | Re : Fonction aléatoire sur tableaux

asdr

J'aurai peut-etre du préciser que le deuxieme nombre tiré aléatoirement doit etre different des valeurs contenu dans le premier tableau à l'indexe qui a pour valeur le premier nombre tiré aléatoirement.

Exemple :

tableau1 = 1, 2 , 3 , 4

1 = 2,3,4
2 = 3,4
3 = 3
4 = 1,3

Imaginons que l'on tire le premier nombre :
2

Il faudra alors que le deuxième nombre soit différent de :
3 et 4
mardi 21 juin 2011 à 17:39:52 | Re : Fonction aléatoire sur tableaux

asdr

Bon je vais changer ma logique de fonctionnement et faire en sorte que chaque nombre ne peut être tiré qu'une fois par jour, ainsi j'évite les doublons et je me facilite la vie !


Cette discussion est classée dans : fonction, chiffre, tableau, valeurs, aleatoire


Répondre à ce message

Sujets en rapport avec ce message

Tableau en php(débutant) [ par iomega ] Bonjour à tous je suis débutant en php et je voudrai manipuler un tableau voici mon problèmele tableau $tab100 contient des valeurs 0.125,0.25 etc...j return et while [ par righton ] Bonjour, voilà mon pb : j'ai une fonction dans laquelle je créé un tableau. Cette fonction retourne des valeurs, et je souhaite ajouter au return les Retourner un tableau à partir d'une fonction [ par Gregg69 ] Voila mon problème:J'ai une fonction qui me construit un tableau à 2 dimensions et me donne une valeure int.J'aimerais pouvoir retourner ces 2 argumen Envoyer un tableau en paramètre d'une fonction [ par syl2 ] Bonjour,J'aimerais savoir s'il est possible de passer un tableau en paramètre d'une fonction en PHP. en faite, voilà j'ai un formulaire qui contient u problème style dans fonction print""; [ par pyranhaz ] La fonction print""; ne semble pas prendre en charge la mise en style du tableau...Je désire qu'au passage de la souris, la cellule du tableau devienn parcours de tableau et récupération de valeurs [ par chouchou1 ] Salut à tous, Je voudrais parcourir un tableau et placer chaque valeur que je rencontre dans une variable différente, est-ce que c est possible? une pb avec la poo5 [ par windu ] Voila mon problème:Je crée un objet qui manipule (entre autres) des tableaux.... jusque là tout va bien!La où je coince, c'est que cet objet est appel Tableau Dynamique [ par Gagou_c ] Bonjour,Je suis actuellement entrain de developper l'intranet de mon entreprise.je dois gérer une page affichant une sorte d'arborescence--> Theme Tableau dynamique [ par Gagou_c ] Bonjour,Je suis actuellement entrain de developper l'intranet de mon entreprise.je dois gérer une page affichant une sorte d'arborescence--> Theme---- Récupérer les valeurs d'une fonction [ par Also know as ] Bonjour,Voilà je suis en train d'apprendre le PHP et j'ai quelques problèmes avec un fichier que j'ai crée.Dedans je met quelques pages de base, car j


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales