IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Remplissage d'un tableau aléatoire sans fonction PHP


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut Remplissage d'un tableau aléatoire sans fonction PHP
    Salut à toutes et tous,

    J'essaye de m'exercer aux tableaux en PHP, et je bloque sur un énoncé:

    Je dois créer un tableau de 10 entrées, avec des chiffres choisis aléatoirement. Mais je ne peux pas utiliser la moindre fonction native de PHP pour réaliser cela.
    Ensuite, je dois trier ce tableau, toujours en la moindre fonction native de PHP, juste avec des boucles et/ou des conditions.

    Petite précision: pour le choix aléatoire des valeurs, je peux utiliser la fonction date.

    J'avoue que je suis perdu, aucune idée de comment commencer cet énoncé.
    Auriez vous des infos sur la logique à adopter afin de réaliser cela?

    D'avance merci,

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Tu n'as vraiment droit à AUCUNE fonction php native excepter date ? (genre microtime tu as le droit ou pas ?)
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Aucune méthode hormis date, je confirme.
    A quoi aviez-vous pensé avec microtime ?

    Dans le pire des cas, j'aimerais voir comment m'y prendre en utilisant cette méthode c'est toujours ça de prit ;-)

    Merci ;-)

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    La date seule n'est pas sufisante pour créer des nombres aléatoires (ou plutôt pseudo-aléatoire).

    D'ailleurs de quelle taille doivent être tes nombres (et pas chiffre, puisque que chiffre c'est 0 à 9) ?
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    La taille importe peu apparement, et un chiffre/nombre peut se répéter plusieurs fois.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    aaaarrrglll..... Aucune fonction native ? du tout ? ben, ça va pas être de la tarte

    Donc :
    • création d'un tableau : là, pas le choix, il faut utiliser array, c'est la seule façon d'initialiser un tableau.
    • remplissage du tableau avec des nombres aléatoires : le problème, là, c'est d'avoir un algo de génération de nombre aléatoire. Trouvé sur Wikipédia : La méthode de Von Neumann, qui parait réalisable en prenant comme nombre source quelque chose comme les minutes et secondes concaténées.
    • tri du tableau : pareil, il te faut un algorithme de tri. Le grand classique dans ce genre de cas est le Tri à bulles.


    Essaye de faire les deux morceaux du code séparément. Commence par faire le tri d'un tableau fixe (si tu sais ce qu'il y a au départ, tu peux vérifier ce qu'il y a à l'arrivée) et la génération d'une série de nombre aléatoire à part, et branche ensuite les deux morceaux ensemble. Use et abuse du var_​dump pour voir ce qu'il ya dans des variables.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    - array() n'est pas une fonction, c'est un construit du langage, c'est donc autorisé. Et si le prof s'entête (à tort, son énoncé est très clair, pas la "moindre fonction"), on peut créer et remplir un array en même temps en assignant son contenu un par un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $array[] = 1;
    $array[] = 2;
    //etc...
    Ce qui est un candidat parfait pour l'utilisation dans une boucle.

    - Réellement aléatoire, ou juste des chiffres "au hasard"? Aléatoire veut dire imprévisible: on ne peut pas prédire la valeur d'un élément n+1 si on a les n éléments précédents. Ça va être compliqué à mettre en oeuvre. Si c'est juste des chiffres pseudo-aléatoires, tu peux partir de la méthode proposée par Celira effectivement, en utilisant comme base par exemple date('U'). Tu peux aussi diversifier, en multipliant/divisant/additionnant/soustrayant les chiffres avec d'autres constantes (pi par exemple), voir utiliser plusieurs générateurs placés dans une boucle etc...

    Bon courage!

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En prenant 'U', c'est à dire des secondes, j'ai peur qu'on n'aille pas loin dans l’imprévisibilité. En exécutant le script plusieurs dans la même seconde j'aurais toujours le même résultat.

    Un article sur les Générateurs Congruentiels Linéaires :
    http://yahiko.developpez.com/tutorie...bre-aleatoire/

    Mais notre problème reste qu'en n'ayant l'heure comme point de départ, on est coincé.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Effectivement. Un accès à microtime aurait été plus facile :-(

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Tu as ici une version PHP sans utilisation de fonctions du générateur Marsenne :
    http://www.teknically-speaking.com/2...ite-of-my.html

    Il faut remplacer time() par date('U').

    Bien évidemment, ce genre de code est hors de portée d'un étudiant, voire d'un bon développeur, donc je ne pense pas que ton cours php prévoit ce genre de code.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    J'imagine que ton prof attends tu cherches comment sont générés les nombres pseudo-aléatoires et que tu tentes d'implémenter un algo.

    Si tu cherche sur wikipedia tu trouveras des tas d'exemples. Par exemple tu as l'algo xorshift qui est super simple a implémenter, mais y'en a plein d'autres.

    https://en.wikipedia.org/wiki/List_o...rs_.28PRNGs.29

    Exemple :

    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
     
    // algo
    function xorshift()
    {
    	global $x, $y, $z, $w;
     
    	$t = $x ^ ($x << 11);
    	$x = $y;
    	$y = $z;
    	$z = $w;
     
    	return $w = $w ^ ($w >> 19) ^ $t ^ ($t >> 8);
    }
     
    // seed
    $d = date('U');
    $x = $d[7].$d[9];
    $y = $d[6].$d[8];
    $z = $d[3].$d[5];
    $w = $d[2].$d[4];
     
    // génère du valeurs aléatoires
    echo 'Numéro 1 : ' . xorshift() . '<br>';
    echo 'Numéro 2 : ' . xorshift() . '<br>';
    echo 'Numéro 3 : ' . xorshift() . '<br>';
    echo 'Numéro 4 : ' . xorshift() . '<br>';

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'imagine que ton prof attends tu cherches comment sont générés les nombres pseudo-aléatoires et que tu tentes d'implémenter un algo.
    Ah ba il plus besoin de chercher maintenant
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Ok, et bien grand merci à vous pour toutes les pistes/infos envoyées et partagées. En fait, le but est de me faire bosser le plus possible sur les tableaux.
    Je pense que lorsque le prof parle d'aléatoire, c'est pas le plus important. Le chiffre doit globalement être pris au hasard, même si ce n'est pas un "vrai" aléatoire.

    Je vais faire de mon mieux, j'espère avoir le temps de bosser sur cela cette semaine, mais je bosse également donc... chaud ;-)

    Je viendrai placer ici mes différentes pistes/solutions et question éventuelles.

    Grand merci à vous!

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ah ba il plus besoin de chercher maintenant
    Bah j'espère que si, je voulais juste monter une façon de chercher des infos.

    C'était pas du tout pour donner une réponse toute faite à filer au prof. En plus je pense que c'est pas du tout ça la réponse, c'est un truc beaucoup plus simple pour apprendre à utiliser les tableaux.

  15. #15
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Je viens aux nouvelles, car j'ai eu plus de détails.
    J'ai réussi à générer un nombre aléatoire, compris entre 0 et 100 en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $time = microtime(true);
    $random = ((($time * 100) % 100));
    Par contre, maintenant je dois pouvoir lancer ce random un certain nombre de fois, et remplir un tableau afin d'avoir 10 éléments.
    Une fois que j'ai 10 éléments, cela doit s'arrêter, et je dois commencer à trier.

    Et là je galère déjà, car je n'arrive pas à voir comme m'y prendre pour remplir le tableau...

  16. #16
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    La méthode de Von Neumann indiqué en haut de ce topic me semble être un très bon choix

    Remarque : avec la fonction microtime, tu peux créer 5 nombres de 4 chiffres "pseudo-aléatoire", je te laisse essayer de deviner comment.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  17. #17
    Membre du Club
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Je me suis peut-être mal exprimée, mais le souci n'est pas dans la génération du nombre aléatoire.
    Le souci, c'est pour remplir un tableau, avec les nombres aléatoires

  18. #18
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Pour créer un tableau :

    Pour ajouter un élément à un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab[] = $tonNbAleatoire;
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/06/2009, 16h50
  2. [Tableaux] Tableau vers XML avec une fonction PHP
    Par astrotouf dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2009, 22h51
  3. passer tableau en reference dans fonction PHP
    Par ju0123456789 dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2008, 15h59
  4. [Tableaux] Fonction PHP et tableau à 2 dimensions
    Par ponteprimo dans le forum Langage
    Réponses: 3
    Dernier message: 06/09/2006, 14h21
  5. [VBA-E]Remplissage tableau aléatoire
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/06/2006, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo