c'est pas bon signe pour moi çaAu passage, veux tu un cachet d'aspirine ?
$tab[] = mt_rand(array(1),array($i));
Je suis un peu larguée là, je chauffe ou pas du tout ?
c'est pas bon signe pour moi çaAu passage, veux tu un cachet d'aspirine ?
function creer_nombre_aleatoire($premier_parametre=null,$second_parametre=null){
//action
//retourne une valeur numérique (!)
}
Donc dans ta boucle, tu as besoin d'une seule ou plusieurs valeurs retournées par la fonction pour utiliser correctement ta conditionnelle ?
J'ai pas tout suivi en détail, mais à partir du moment où tu code, à mon avis tu ne peux faire que du pseudo aléatoire.Admettons que les fonctions natives de PHP créant un nombre aléatoire n'existent pas, il faudrait de par ce fait les coder, n'est ce pas ?
<?php
function nb_alea()
{
$val=mt_rand(1,49);
echo $val;
return ($val);
}
//nb_alea();
?>
<?
function tirage($nombre)
{
$r="";
for ($tirage=0;$tirage<=5;$tirage++)
{
if ($nombre==$r)
{
tirage(nb_alea());
}
else {$r.=$nombre;}
}
echo $r.".";
}
tirage(nb_alea());
?>
Comme je tournais en rond, j'ai pondu ça, une autre approche avec des fonctions, mais c'est pas parfait et je m'enfonce encore plus <?php
function nb_alea()
{
$val=null;
$val=mt_rand(1,49);
echo $val;
//print_r($val);
return ;
}
$tab_tirage = array();
for ($tirage=0;$tirage<=5;$tirage++){
if(!in_array($tab[nb_alea()],$tab_tirage))
{
$tab_tirage[]=$tab[$val];
}
else { $tirage--; }
}
echo implode(".",$tab_tirage).'<br/>';
//var_dump($tab_tirage);
exit;
?>
Doit y manqué un oeuf je pense car la recette n'est pas parfaite
La deuxième est plus proche de la solution. Je pense qu'avec la solution et le message d'erreur de départ (de mémoire illegal offset) vont te permettre de comprendre mieux. C'est plus simple que ça.Comme je tournais en rond, j'ai pondu ça, une autre approche avec des fonctions, mais c'est pas parfait et je m'enfonce encore plus
ou celui là, je sûr que je touche au but j'ai juste des "Notices":
[/b]<?php function nb_alea() { $val=null; $val=mt_rand(1,49); echo $val; //print_r($val); return ; } $tab_tirage = array(); for ($tirage=0;$tirage<=5;$tirage++){ if(!in_array($tab[nb_alea()],$tab_tirage)) { $tab_tirage[]=$tab[$val]; } else { $tirage--; } } echo implode(".",$tab_tirage).'<br/>'; //var_dump($tab_tirage); exit; ?>
Doit y manqué un oeuf je pense car la recette n'est pas parfaite![]()
I am not a cordon bleue du PHP
$tab_tirage = array();
for ($tirage=0;$tirage<=5;$tirage++){
$val_al = mt_rand(1,49); //retourne un integer (!) et sera régénéré 6 fois voir plus s'il y a des concordances
if(!in_array($val_al,$tab_tirage)){
$tab_tirage[]=$val_al;
}else {
$tirage--;
}
}
echo implode(".",$tab_tirage).'<br/>';
//maniere initiale
$tab=range(1,49);
//création du tableau avec 49 chiffres
$valeur_trouvee = array();//création d'un 2ème tableau vide
for ($tirage=0;$tirage<=5;$tirage++){// boucle pour 1 tirages de 6 chiffs
$val=array_rand($tab);//retourne un indice (!) aléatoire et le place en $val
if (!in_array($tab[$val],$valeur_trouvee)) {
$valeur_trouvee[] = $tab[$val];
}else{
$tirage--;
}
}
echo implode(".",$valeur_trouvee);//convertion tableau en caractères
Que veut dire le fameux illegal offset ... : souvent ce message apparait lorsque la boucle parcours plus que le nombre de clef dans un array. De tout manière in_array attend une valeur. Que ce soit ce genre de syntaxe : $tab[$clef] ou ceci : $valeur, c'est du pareil au même. function nb_alea()
{
$val=null;
$val=mt_rand(1,49);
return $val;
}
$val = nb_alea(); //retourne un int compris entre 1 et 49
<?php
function nb_alea()
{
$val=mt_rand(1,49);
return ($val);
}
function affic_tirage()
{
$tab_tirage = array();
for ($tirage=0;$tirage<=5;$tirage++){
if(!in_array(nb_alea(),$tab_tirage))
{
$tab_tirage[]=nb_alea();
}
else { $tirage--; }
}
echo implode(".",$tab_tirage).'<br/>';
exit;
return;
}
affic_tirage();
?>
C'est mieux là hein niuxe function nb_alea()
{
$val=mt_rand(1,49);
//echo $val;
return ($val);
}
print_r(nb_alea());
var_dump(nb_alea());
ça me retourne pas un tableau ! j'ai juste un Integer. Comme tu le dis plus haut, faut pas mélanger les serviettes et les torchons ensembles.$nombre=nb_alea();
if(!in_array($nombre,$tab_tirage))
{
$tab_tirage[]=$nombre;
et la condition fonctionne mieux !
Juste un conseil en passant, si tu as du temps de libre ce serait bien de t'y mettre sérieusement... c'est une grosse partie qui t'avancera beaucoup. En php on fait des miracles avec les tableaux et il existe moult fonctions natives pour les manipuler dans tous les sensj'ai pas du tout l'habitude de travailler avec des tableaux, j'ai passé ce chapitre en le survolant...
+10...Juste un conseil en passant, si tu as du temps de libre ce serait bien de t'y mettre sérieusement... c'est une grosse partie qui t'avancera beaucoup. En php on fait des miracles avec les tableaux et il existe moult fonctions natives pour les manipuler dans tous les sens
Je rajouterai, il faut persévérer dans ce que l'on fait.Il suffit de concentrer son esprit pour y arriver.
<mode sadique_nevrose="on">Mais à ta façon, le script est plus rapide, j'ai l'impression.
Le principe est d'aller droit au but, la manière peut être secondaire. Là dans ton cas, mt_rand suffit amplement.oui, les tableaux semblent être omniprésent en PHP et je commence à en prendre concience qui va falloir que je travaille la chose.
Là je suis vraiment agacée, car j'ai un copain sur msn qui me dit faut pas utiliser mt_rand()![]()
Alors fallait pas utilise rand() non plus![]()
Il faut que j'utilise mt_srand() pouuuua!!!! et il est encore différent celui là dans sa syntaxe![]()
Avec le PHP j'ai l'impression qui faille toujours se remettre en cause
for ($en_six=0;$en_six<=5;$en_six++){
$resultat=array();
//print_r($numbers);
for($i=0;$i<=49;$i++)
{
$numbers= range(1, $i);
shuffle($numbers);
for ($a=0;$a<=43;$a++)
{unset($numbers[$a]);}//retire 43 numéro à partir de la fin
if (in_array($numbers,$resultat))
{$en_six--;$a--;}
else{$resultat=$numbers;}
}
echo implode(".",$numbers).'<br/>';}
//var_dump($numbers);
//print_r($resultat);
?>
C'est pas là aussi, mais c'est un peu tordu
$nombre_valeur_a_retourner = 50;
$resultat = array();
while (count($resultat) < $nombre_valeur_a_retourner)
{
$resultat[] = mt_rand(0,49);
$resultat = array_unique($resultat);
}
echo '<pre>';
print_r($resultat);
echo '</pre>';
Remarque bien que ce n'est pas optimisé par rapport à la solution 1 de ton livre.