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 Java Discussion :

Problème de fonction random


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Par défaut Problème de fonction random
    Bonjour à tous j'ai un petit problème avec une fonction random que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public int my_rand ()
    	{
    		number_ = (number_ * 1103515245) + 12345;
    		System.out.println("MULT" + " " + number_);
    		number_ = ((number_ >> 16) & 32767) % 8;
    		return number_;
    	}
     
    	public void my_srand (int seed)
    	{
    		number_ = seed;
    	}
    Les opératiosn ne se font pas comme prévu et cela à cause du 1103515245 qui dépasse la mémoire des int, donc j'ai changé tout en long. Sauf qu'en changeant tout en long et bien j'obtiens à la suite:
    7
    4
    1
    6
    6
    6
    6
    6
    6
    6
    6
    ...
    Passé 4 itérations il y a que des 6 qui s'affichent, quelqu'un aurait-il une idée sur le problème de cette fonction?

    Merci.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Kai,

    Pourquoi vouloir refaire une fonction random ?

    En faire une de qualité correcte ne s'improvise pas, tu en as la preuve avec ton code.

    Accessoirement, avec cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    number_ = ((number_ >> 16) & 32767) % 8;
    tu ramènes number_ dans une gamme de valeurs de 0 à 7, et manifestement tu tombes dans une boucle dès que tu as obtenu 6 en sortie.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je me demande d'où sort cet algo de random.

    Celui que je connais ne fait que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    number_ = (number_ * 1103515245 + 12345) % (1 << 16);
    (Pour faire du 16-bits)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Par défaut
    car c'est dans le cadre d'un projet scolaire. Et le problème c'est que si je n'ai pas la même fonction de random et bien le résultat sera pas bon...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Par défaut
    J'ai essayé de mettre vos réponses mais ça ne fonctionne pas ça donne des nombre négatifs

  6. #6
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Pourquoi vouloir refaire ce qui existe déjà ?

    Il y a déjà une classe qui fait ça très bien:
    http://download.oracle.com/javase/1....il/Random.html

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par overlolo Voir le message
    car c'est dans le cadre d'un projet scolaire. Et le problème c'est que si je n'ai pas la même fonction de random et bien le résultat sera pas bon...
    Si ça doit etre prédictible, c'est plus du random. Créer une fonction random ça s'improvise pas, et votre algorithme est tout sauf aléatoire, il converge!

Discussions similaires

  1. Problème fonction random
    Par Ice Berg dans le forum C++
    Réponses: 2
    Dernier message: 28/10/2014, 14h10
  2. Problème fonction random avec linux
    Par fabetvince dans le forum C
    Réponses: 12
    Dernier message: 25/05/2006, 23h45
  3. [LG]Fonction random
    Par platoon5 dans le forum Langage
    Réponses: 16
    Dernier message: 22/02/2005, 20h47
  4. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52
  5. Fonction Random en Assembleur
    Par chidi dans le forum Assembleur
    Réponses: 5
    Dernier message: 21/05/2004, 10h16

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