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 :

fonction rand() php


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Points : 142
    Points
    142
    Par défaut fonction rand() php
    bonjour,
    est il possible simplement lorsque l'on fait appele a la fonction rand(), comme ceci:
    for($i=1;$i<=$_POST['choix'];$i++)
    {
    echo rand(1,$_POST['rand_max']);
    }

    qu'il ne sorte jamais 2 fois la meme valeur ( j'ai bien dit simplement sinon laissez tomber)

    d'avance merci

  2. #2
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Salut,
    je ne pense pas que tu puisse empecher une valeur de sortir de fois uniquement avec ce code.
    Il faudrait que tu enregistre dans un tableau les valeurs qui sortent.
    Ensuite, chaque fois que tu sort une nouvelle valeur X avec rand :
    - si X n'est pas dans le tableau, alors tu l'affiche et tu l'enregistre dans le tableau
    - sinon tu sors une nouvelle valeur
    ... et aisinsi de suite jusqu'a ce que tu sorte une valeur qui n'est pas dans le tableau

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    En la comparant aux valeurs d'un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $rands_existants = array();
    for($i=1;$i<=$_POST['choix'];$i++) 
    { 
     
       $rand = rand(1,$_POST['rand_max']);
       while (in_array($rand, $rands_existants)) {
          $rand = rand(1,$_POST['rand_max']);
       }
       $rands_existants[] = $rand
     
    }
    Edit: grillé

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Points : 142
    Points
    142
    Par défaut
    ok je vous remercie, c'est ce que je pensais mais je voulais savoir avant si il n'existait pas une fonction ressemblant a rand() mais qui detecter les valeurs deja sorties , merci

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    A noter qu'elle existait un bug de la fonction rand sur certaine vieille version de PHP, je sais plus lesquels, mais c'est celle d'easyphp 1.6 et antérieure.
    La fonction rand n'est pas vraiment aléatoire, elle sortait tjs les meme suites de nombres.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  6. #6
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    Citation Envoyé par wamania
    La fonction rand n'est pas vraiment aléatoire, elle sortait tjs les meme suites de nombres
    ben ca c'est pas étonnant, la notion de hasard n'existe pas dans la logique de l'ordinateur. A cause de ca, il n'existe pas vraiment de fonctions permettant de sortir des nombres aléatoires, seulement des pseudo-aléatoires. Evidament, certaines fonctions sont plus évoluées que d'autres ....
    Personellement, j'ai déja eu ce genre de problèmes, pas en php mais en basic sur une antiquité, il ya longtemps. Pour y remedier le mieux est de faire une fonction qui prend en compte des parametres apelés a varier beaucoup et surtout qui soient externes à l'application. Exemple : un timestamp , le nombres de millisecondes entre tel et tel évenements provoqués par l'utilisateur, l'adresse ip du client multipliée par l'url divisée par l'age du capitaine ... bref n'importe quoi, pourvu que ca n'ait aucun sens
    Apres, y'a plus qu'a inclure ce parametre d'une façon ou d'une autre à l'algo (par exemple dans le nombre de tours d'une boucle) qui genere le nombre pseudo-aléatoire et le tour est joué.
    Bon ok, ca n'est pas vraiment aléatoire non plus, c'est un peu bizzare comme truc (pour pas dire tordu) mais ca marche plutôt bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX] Problème flash et fonction mail() php
    Par proutcore dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2007, 12h21
  2. [Mail] Fonction mail php-bdd
    Par pod1978 dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2006, 17h54
  3. fonction rand() sur liste ?
    Par debutant-1 dans le forum C
    Réponses: 10
    Dernier message: 24/05/2006, 10h58
  4. Algo de la fonction RAND
    Par booby dans le forum C
    Réponses: 3
    Dernier message: 21/04/2006, 14h25
  5. [PHP-JS] fonction .innerHTML="" + PHP
    Par sigmar_avenger dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/01/2006, 12h20

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