Mastermind avec php
Résolu/Fermé
A voir également:
- Mastermind php
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Href php ✓ - Forum PHP
- Bouton php - Forum PHP
14 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
6 nov. 2007 à 21:42
6 nov. 2007 à 21:42
Salut
Désolé, je n'avais pas vu ton post.
Je te donne pas la syntaxe php, mais une méthode pour choisir 4 chiffres distincts.
Je suppose que ya 6 couleurs (0,1,2,3,4,5) différentes.
Tu fais un tableau de 6 cases initialisées à 0 1 2 3 4 5.
Tu mélanges ce tableau en échangeant des indices pris au hasard. Et tu prends les 4 premières cases du tableau.
Si tu veux 4 chiffres qui peuvent être identiques. Tu tires un nombre aléatoire. Pour la case vide, tu peux par exemple choisir arbitrairement 7 comme case vide. Si le nombre pris au hasard est 7, alors tu initialises la case à null.
J'espère avoir répondu à ta question
Bonne soirée
Désolé, je n'avais pas vu ton post.
Je te donne pas la syntaxe php, mais une méthode pour choisir 4 chiffres distincts.
Je suppose que ya 6 couleurs (0,1,2,3,4,5) différentes.
Tu fais un tableau de 6 cases initialisées à 0 1 2 3 4 5.
Tu mélanges ce tableau en échangeant des indices pris au hasard. Et tu prends les 4 premières cases du tableau.
Si tu veux 4 chiffres qui peuvent être identiques. Tu tires un nombre aléatoire. Pour la case vide, tu peux par exemple choisir arbitrairement 7 comme case vide. Si le nombre pris au hasard est 7, alors tu initialises la case à null.
J'espère avoir répondu à ta question
Bonne soirée
salamoelikom
merci bien pour ton aide
pour les 4 chiffres il est obligatoire d'utiliser rand() qui fait choisir par defaut les nombres sans que je les sache(le pc il meme qu'ils les choisir) alors la methode que tu ma donne est inutile dans ce cas,
et pour la case vide je vais essyee et je vous affiche le resultat
encore une merci pour ta reponse
merci bien pour ton aide
pour les 4 chiffres il est obligatoire d'utiliser rand() qui fait choisir par defaut les nombres sans que je les sache(le pc il meme qu'ils les choisir) alors la methode que tu ma donne est inutile dans ce cas,
et pour la case vide je vais essyee et je vous affiche le resultat
encore une merci pour ta reponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
6 nov. 2007 à 22:33
6 nov. 2007 à 22:33
Oui rand() fait choisir les nombres aléatoirement.
Mais tu as dit qu'en débutant, il faut que tous les nombres soient différents. avec rand() rien te dit que tu vas tirer que des nombres différents.
Mais tu as dit qu'en débutant, il faut que tous les nombres soient différents. avec rand() rien te dit que tu vas tirer que des nombres différents.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
salam:
Bonjour, renjie & fidddy ;
c vrai que rand() ne tire pas forcement des nombres différents, mais on peut avec une petite 'astuce' de tester si on a deux variable ou plus ont la mèm valeur, si oui :
ALGO :
chaque fois rand() tire une value on le stock dans le tableaux,
on initialise le compteur c à 0,
et on cherhce en parcourant toutes les élements précidents du tableaux si on a une valeur déja existe identique à cette valeur tiré.
on incrémente le compteur c,
et enfin si le compteur a été incrimenter
on décrimente l'indice i pour refaire le rand().
PHP :
srand();
// echo "lancer rand";
for($i=0; $i<4; $i++)
{
$haz[$i]=rand(0,9);
$c=0;
for($j=0; $j<$i; $j++)
{
if($haz[$i]==$haz[$j])
$c++;
}
if($c>0) $i--;
}
j'espére que m'astuce' est comprénsible.
à bien tôt ------ k.hicham ------ESTE
Bonjour, renjie & fidddy ;
c vrai que rand() ne tire pas forcement des nombres différents, mais on peut avec une petite 'astuce' de tester si on a deux variable ou plus ont la mèm valeur, si oui :
ALGO :
chaque fois rand() tire une value on le stock dans le tableaux,
on initialise le compteur c à 0,
et on cherhce en parcourant toutes les élements précidents du tableaux si on a une valeur déja existe identique à cette valeur tiré.
on incrémente le compteur c,
et enfin si le compteur a été incrimenter
on décrimente l'indice i pour refaire le rand().
PHP :
srand();
// echo "lancer rand";
for($i=0; $i<4; $i++)
{
$haz[$i]=rand(0,9);
$c=0;
for($j=0; $j<$i; $j++)
{
if($haz[$i]==$haz[$j])
$c++;
}
if($c>0) $i--;
}
j'espére que m'astuce' est comprénsible.
à bien tôt ------ k.hicham ------ESTE
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
11 nov. 2007 à 00:16
11 nov. 2007 à 00:16
Salut kab_hicham,
Oui c'est la méthode qui parait la plus logique. Mais le problème de celle-ci est que ce n'est pas une bonne habitude à prendre lorsqu'il y a pleins de nombres à tirer. En effet, le compilateur pourrait retomber plusieurs fois sur des nombres déjà tirés. D'autant plus que c'est un algorithme n'a pas une bonne complexité.
La méthode consistant à initialiser un tableau et de le mélanger par indice a une complexité en O(n).
Cdt
Oui c'est la méthode qui parait la plus logique. Mais le problème de celle-ci est que ce n'est pas une bonne habitude à prendre lorsqu'il y a pleins de nombres à tirer. En effet, le compilateur pourrait retomber plusieurs fois sur des nombres déjà tirés. D'autant plus que c'est un algorithme n'a pas une bonne complexité.
La méthode consistant à initialiser un tableau et de le mélanger par indice a une complexité en O(n).
Cdt
Salam,
salut Fiddy;
Je te comprend bien ce que tu veux dire ("on initialise le tableaux avec quatre chifres et on les melange par indice ") mais pourtant toi t'a pas encore comprend le but du jeux, il ne faut pas que les chifres tiré soit initialisé par le programmeur, seule la machine à le droit de choisir aléatoirment les quatres chifre à l'interval [0-9].
pour notre cas on a juste 4 chifres à tiré, ce qui fait déja la probabilité de tomber sur des chifres déja existe est trés petit.
j'éspere que vous avez déja jouer sur ce type de jeux "Master mind" pour bien comprendre le principe. vous l'aver dit
google is y'r friend, have fun with PHP
à bien tôt ------ k.hicham ------ESTE
salut Fiddy;
Je te comprend bien ce que tu veux dire ("on initialise le tableaux avec quatre chifres et on les melange par indice ") mais pourtant toi t'a pas encore comprend le but du jeux, il ne faut pas que les chifres tiré soit initialisé par le programmeur, seule la machine à le droit de choisir aléatoirment les quatres chifre à l'interval [0-9].
pour notre cas on a juste 4 chifres à tiré, ce qui fait déja la probabilité de tomber sur des chifres déja existe est trés petit.
j'éspere que vous avez déja jouer sur ce type de jeux "Master mind" pour bien comprendre le principe. vous l'aver dit
google is y'r friend, have fun with PHP
à bien tôt ------ k.hicham ------ESTE
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
12 nov. 2007 à 07:45
12 nov. 2007 à 07:45
Salut kab_hicham,
Je pense que tu n'as pas bien compris mon algorithme alors.
Tu initialises un tableau. Le programme le mélange en prenant deux indices au hasard. Et on effectue plusieurs itérations.
Les valeurs choisies sont donc également des valeurs aléatoires.
Cdt
Je pense que tu n'as pas bien compris mon algorithme alors.
Tu initialises un tableau. Le programme le mélange en prenant deux indices au hasard. Et on effectue plusieurs itérations.
Les valeurs choisies sont donc également des valeurs aléatoires.
Cdt
salamoelikom;
salut hicham et fiddy merci pour vos participations je pense que la mielleur methode pour eviter la repetition des valeusr choisisseés par rand est les met dans un fichier et cela on pt garder les memes valeurs.
salut hicham et fiddy merci pour vos participations je pense que la mielleur methode pour eviter la repetition des valeusr choisisseés par rand est les met dans un fichier et cela on pt garder les memes valeurs.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
12 nov. 2007 à 23:57
12 nov. 2007 à 23:57
Salut
renjie. Euh, avec ta solution, je ne vois où est l'aspect aléatoire. A moins que j'ai pas compris ce que tu voulais dire.
Cdt
renjie. Euh, avec ta solution, je ne vois où est l'aspect aléatoire. A moins que j'ai pas compris ce que tu voulais dire.
Cdt
salamoelikom;
je parle sur les repetitions des valeurs que achaque fois le joueur repete le jeu ( avant qu'il depace 10 fois ) il faut que les valeurs choisissées par rand() restent les meme ( c'est pa le meme problem de la repetition des chiffres) mais comm mm c'est la solutionb de mastermind pour eviter le changement des valeurs de rand() parcque achque fois quand excute le programme rand() prend des nouvelles valeurs.
je parle sur les repetitions des valeurs que achaque fois le joueur repete le jeu ( avant qu'il depace 10 fois ) il faut que les valeurs choisissées par rand() restent les meme ( c'est pa le meme problem de la repetition des chiffres) mais comm mm c'est la solutionb de mastermind pour eviter le changement des valeurs de rand() parcque achque fois quand excute le programme rand() prend des nouvelles valeurs.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
13 nov. 2007 à 00:20
13 nov. 2007 à 00:20
Re,
Si tu veux qu'il garde les mêmes valeurs, tu en prends toi même au pif, et tu les mets dans ton programme. Enfin, mettre ça dans un fichier, c'est se compliquer la vie. Mais c'est toi le programmeur ;)
Cdt
Si tu veux qu'il garde les mêmes valeurs, tu en prends toi même au pif, et tu les mets dans ton programme. Enfin, mettre ça dans un fichier, c'est se compliquer la vie. Mais c'est toi le programmeur ;)
Cdt
salamoelikom,
c'est n'est pas complique, il est simple de travailler avec les fichiers, mais c'est ta une solution mieu sera mieux ...
c'est n'est pas complique, il est simple de travailler avec les fichiers, mais c'est ta une solution mieu sera mieux ...
Salam:
Bonjour, renjie & fidddy ;
Moi j'ai cru au début que le problème discuté concerne le fait que rand() doit tirer 4 chiffres aléatoirement sans répétition. :s
ben, mnt c un autre problème entamé le fait que les quatre chiffres tirés doit reste les mêmes pendant la partie du jeux (10 essais), oui ce que t'a dit renjie:(" pour eviter la repetition des valeusr choisisseés par rand est les met dans un fichier et cela on pt garder les memes valeurs.") est envisageable,clair mais il faut pas ignoré que le fichier en local où tu va mettre tes valeurs ne doit pas être accessible par l'utilisateur et par la suite tes 4 chiffres vont être dévoilé, et par la suite en perde le principe du jeux. "Master Mind"
Pour ça je te propose deux solution soit tu les mets dans un fichier mais en cryptage une des fonction (md5(),crypt(),.. ) et on a pleins d'autres.
Si non si t'a pas envie de faire en sorte de cryptage tu doit mettre ton fichier en serveur (hebergeur) comme ça tu protège tes 4 chiffres tranquilelment :).
j'espère j'su rester objectif ds mon analyse c mon point de vue elle est discutable.
à bien tôt ------ k.hicham ------ESTE
Bonjour, renjie & fidddy ;
Moi j'ai cru au début que le problème discuté concerne le fait que rand() doit tirer 4 chiffres aléatoirement sans répétition. :s
ben, mnt c un autre problème entamé le fait que les quatre chiffres tirés doit reste les mêmes pendant la partie du jeux (10 essais), oui ce que t'a dit renjie:(" pour eviter la repetition des valeusr choisisseés par rand est les met dans un fichier et cela on pt garder les memes valeurs.") est envisageable,clair mais il faut pas ignoré que le fichier en local où tu va mettre tes valeurs ne doit pas être accessible par l'utilisateur et par la suite tes 4 chiffres vont être dévoilé, et par la suite en perde le principe du jeux. "Master Mind"
Pour ça je te propose deux solution soit tu les mets dans un fichier mais en cryptage une des fonction (md5(),crypt(),.. ) et on a pleins d'autres.
Si non si t'a pas envie de faire en sorte de cryptage tu doit mettre ton fichier en serveur (hebergeur) comme ça tu protège tes 4 chiffres tranquilelment :).
j'espère j'su rester objectif ds mon analyse c mon point de vue elle est discutable.
à bien tôt ------ k.hicham ------ESTE