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

Algorithmes et structures de données Discussion :

Générateur de nombres aléatoires avec contraintes


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut Générateur de nombres aléatoires avec contraintes
    Bonjour,
    2 topics en un jour et oui ! sur 2 sujet totalement différents mais qui au final se rejoindront dans notre projet.

    Le but de notre générateur est de tenir compte de contraintes imposées par l'utilisateur pour générer au final une expression algébrique aléatoire.
    Notre problème se pose pour la génération d'un nombre, du moment ou nous pouvons en générer un en tenant compte des contraintes les autres suivront le même schéma.

    Par exemple voilà ce que l'utilisateur peut demander pour un nombre donné :
    intervalle : -3..20 et 15..25
    Multiple inclus : 2 et 5
    Multiple exclus : 4
    Ensemble inclus : N et Q
    Ensemble exclus : Z et R

    Bon la l'exemple est vraiment barbare mais c'est pour bien que vous puissiez comprendre toutes les contraintes qui peuvent rentrer en jeu.
    Ici la solution serait visiblement 20 et uniquement 20.

    Le seul problème c'est comment faire pour tenir compte à la fois de toutes les contraintes et de pouvoir conserver un temps de calcul le plus infime possible...

    Nous avions comme idée de départ de réduire le champs de recherche de notre algorithme en le décomposant, nous commencerions par réduire les valeurs possibles aux intervalles que l'utilisateur a choisi de sélectionner. Puis une fois le champs de recherche réduit aux intervalles réduire encore une fois avec les multiples et finir par les ensembles.

    Si l'utilisateur ne choisi aucune contrainte, le nombre est généré aléatoirement parmi tous les ensemble sur l'intervalle -infini ; +infini sachant que ceci n'est pas réaliste, nous limiterons probablement avec des bornes par défaut qu'il nous reste à définir.

    Pour les personnes arrivant à lire ceci jusqu'au bout, je vous remercies de votre attention et de l'aide que vous pourrez nous apporter sur ce problème épineux.

    Cordialement.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par byakuichi Voir le message
    intervalle : -3..20 et 15..25
    Multiple inclus : 2 et 5
    Multiple exclus : 4
    Ensemble inclus : N et Q
    Ensemble exclus : Z et R

    Bon la l'exemple est vraiment barbare mais c'est pour bien que vous puissiez comprendre toutes les contraintes qui peuvent rentrer en jeu.
    Ici la solution serait visiblement 20 et uniquement 20.
    Ca correspond à quoi la contrainte "Multiple inclus/exclus" ?

    Parce que pour moi 20 est un multiple de 4.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    Oui autant pour moi xD
    Mais en gros

    Multiple inclus veut dire que le nombre généré doit être un multiple du ou des multiple inclus.
    Multiple exclus veut dire que le nombre générés ne doit pas en faire partie sinon on retire un nombre

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Dans ce cas, la réduction des intervalles me semble effectivement une bonne tactique.

    Le problème c'est que ca peut générer beaucoup d'intervalles. Par exemple:

    limites : -1000,+1000
    multiples exclus : 1
    valeurs dans Q,R

    --> ]-1000,-999[ U ]-999,-998[ U ... U ]998,999[ U ]999,1000[
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    J'avoue que la je suis en panne sèche :/
    Je ne vois vraiment pas comment générer cette chose de façon simple et de façon surtout à ce que l'utilisateur ne poireaute pas plus de 30sec à une minute devant son PC...

    Si j'avais été sous linux on m'avait conseillé de tirer une valeur dans urandom puis de regarder si elle était dans toute les contraintes souhaitées et si elle ne l'était pas de retirer une valeur dans urandom.

    Sous windows je crois pas qu'il n'y ait d'équivalent au urandom des distribs linux...

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par byakuichi Voir le message
    Sous windows je crois pas qu'il n'y ait d'équivalent au urandom des distribs linux...
    Le plus proche dans windows c'est rand_s() dans l'API stdlib.h

    errno_t rand_s( unsigned int* randomValue);
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    Il faudrait pouvoir appeler la fonction de la librairie C stdlib.h dans mon code delphi. Hors les seules fois ou j'ai du faire cela, j'avais une dll.
    Après il fallait créer une procédure pour chaque fonction de cette dll.

    Ma première question c'est y a-t-il un dll de stdlib.h qui existe dans la nature
    Je suis en train de chercher et pour le moment c'est plutôt chou blanc de mon coté ^^"

  8. #8
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Dans Delphi, il existe une foction random.
    Mais je pense que ce qui te bloques, c'est que tu ne sais pas exactement ce que tu veux. (et nous aussi ) Définis plus clairement le problème, ou le problème en amont.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par byakuichi Voir le message
    Il faudrait pouvoir appeler la fonction de la librairie C stdlib.h dans mon code delphi. Hors les seules fois ou j'ai du faire cela, j'avais une dll.
    Après il fallait créer une procédure pour chaque fonction de cette dll.

    Ma première question c'est y a-t-il un dll de stdlib.h qui existe dans la nature
    Je suis en train de chercher et pour le moment c'est plutôt chou blanc de mon coté ^^"
    Il faudrait poser la question dans le forum Delphi.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    C'est pas faux

  11. #11
    Nouveau Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 0
    Points
    0
    Par défaut
    Code java : 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
    import java.util.*;
    public class Main
    {
    	public static int i ;
    	public static int v;
     
    	public static void main(String args[])
    	   {   
     
     
    	       Random rand = new Random(); 
     
    	           for(int v=1;v<=5;v++)/// le nombre des variables affichées = le nb de v 
    	           {
    	    	   i=rand.nextInt(6);///les valeurs sont compris entre ce qui est entre ()
    	    	   System.out.println(i); 
    	           }
     
     
     
    	   }
    }

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/02/2013, 21h02
  2. générateur de nombre aléatoire
    Par ndefta love dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/12/2006, 22h21
  3. Générateur de nombres aléatoires maxwelliens
    Par Selma_2037 dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/11/2006, 15h54
  4. Générateur de nombres aléatoires
    Par Grand sorcier dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/07/2006, 22h44
  5. Générateurs de nombres aléatoires
    Par Cheps dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/06/2006, 00h37

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