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

R Discussion :

lancer de deux dés


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut lancer de deux dés
    Bonjour,
    On considère un lancer de deux dés nommés : a, b. Calculer la probabilités de p(a=b)

    J'ai utilisé dice(rolls = 2 ,ndice=2).
    Je sais qu'il faut utiliser une loi uniforme discrète, punif.
    Après, je ne sais pas comment faire en sorte de n'avoir que les probabilités de a=b.

  2. #2
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    On te demande de calculer les probabilités que a=b.

    Donc si on prend deux dés à 6 facettes, on a 6 valeurs possibles pour chacun des dés.

    Il suffit ensuite de générer tous les couple possibles, éliminer les doublons, puis voir pour combien de cas on a a=b.
    Ensuite, tu fais une proportionalité sur le nombre de cas (a=b) / nombre total de cas. Et tu as ta réponse .

  3. #3
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    J'étais motivé et m'ennuyais un peu donc j'ai fait un petit programme qui calcule cette probabilité .
    Bien sur ce programme ne devrait pas trop compiler lorsque tu le lances, c'est pour que tu aies une idée de ce qu'il faut faire.
    De plus, j'utilise des concepts avancés de prog que tu n'as pas vus normalement, donc évite de le recopier tel quel pour le rendre à ton prof, tu te feras griller directement .

    test2.cpp

    Code c++ : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    struct coupleValeur
    {
    	int a;
    	int b;
    	struct coupleValeur* next;
    	struct coupleValeur* prev;
    };
     
    void supprimeDoublon(struct coupleValeur* first)
    {
    	struct coupleValeur *liste = first;
    	while (liste)
    	{
    		struct coupleValeur* it = liste->next;
    		while (it)
    		{
    			if (it->a == liste->b && it->b == liste->a && it->a != it->b)
    			{
    				if (it->prev)
    				{
    					it->prev->next = it->next;
    					it->next->prev = it->prev;
    				}
    			}
    			it = it->next;
    		}
    		liste = liste->next;
    	}
    }
     
    void afficherListe(struct coupleValeur* liste)
    {
    	while (liste)
    	{
    		std::cout << liste->a << "/" << liste->b << std::endl;
    		liste = liste->next;
    	}
    }
     
    int countEgal(struct coupleValeur* liste)
    {
    	int ret = 0;
    	while (liste)
    	{
    		if (liste->a == liste->b)
    			ret++;
    		liste = liste->next;
    	}
    	return ret;
    }
     
    int count(struct coupleValeur* liste)
    {
    	int ret = 0;
    	while (liste)
    	{
    		ret++;
    		liste = liste->next;
    	}
    	return ret;
    }
     
    int main(int argc, char* argv[])
    {
    	int valMax = 1;
    	int* valeur;
    	valeur = new int[valMax];
    	int i = 0;
    	while (i < valMax)
    	{
    		valeur[i]=++i;
    	}
    	struct coupleValeur *listeValeur = 0;
    	struct coupleValeur* current = 0;
    	int ia = 0;
    	int ib = 0;
    	while (ia < valMax)
    	{
    		ib = 0;
    		while (ib < valMax)
    		{
    			struct coupleValeur *elem = new coupleValeur;
    			elem->next = 0;
    			elem->prev = current;
    			elem->a = valeur[ia];
    			elem->b = valeur[ib];
    			if (current == 0)
    			{
    				listeValeur = elem;
    				current = elem;
    			}
    			else
    			{
    				current->next = elem;
    				current = current->next;
    			}
    			ib++;
    		}
    		ia++;
    	}
    	supprimeDoublon(listeValeur);
    	//afficherListe(listeValeur);
    	int nbEgal = countEgal(listeValeur);
    	int nb = count(listeValeur);
    	std::cout << "probabilite que a == b est de " << (nbEgal*100)/nb << "%" << std::endl;
    	system("PAUSE");
    	return 0;
    }

    Par contre, tu peux utiliser ce programme pour vérifier que tu obtiens bien le même résultat et comparer ta suppression de doublon à la mienne afin de comprendre les principes de programmation que ton prof veut te faire apprendre au travers de cet exercice.

    PS: J'étais curieux de voir les résultat sur les stats, je pensais que plus le dé pouvait prendre de valeurs, plus on avait de chances de faire un double. Et bah non Oo en fait c'est l'inverse .

    EDIT: oups, je pensais que c'était dans la section C, me suis complètement planté sur ce coup là ^^. Tout étant que tu peux quand même utiliser ce programme pour vérifier les données ou comprendre le mécanisme ^^.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Comment puis-je générer tous les cas possibles ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Pour générer tous les cas possibles, j'ai utilisé ça : plot.dice ( expand.grid(1:6,1:6),layout=c(6,6) )Pour les cas :
    - a=b : ce sont tous les cas qui sont sur la diagonale p(a=b) = 6/36
    - a<b : tous les cas en-dessous de la diagonale p(a<b) = 15/36
    - a>b : tous les cas au-dessus de la diagonale p(a>b) = 15/36
    Mais après, je ne sais pas comment retrouver ces résultats avec une commande.

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    d=expand.grid(1:6,1:6)
    sum(d[1]-d[2] == 0) / length(d[1])
    Avec la fonction sum j'utilise le fait que R convertisse automatiquement les booléens en nombres (TRUE = 1, FALSE = 0).

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

Discussions similaires

  1. [Sessions / htaccess] Lancer les deux
    Par newbiemac dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2007, 00h13
  2. lancer deux fonctions en même temps
    Par youp_db dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/09/2006, 12h11
  3. Lancer deux programmes d'installation un après l'autre
    Par annedeblois dans le forum Windows
    Réponses: 21
    Dernier message: 01/08/2006, 21h04
  4. Réponses: 3
    Dernier message: 11/01/2006, 15h39
  5. Lancer deux sons en même temps...
    Par Julien_riquelme dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 03/05/2003, 17h00

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