Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Erreur de probabilité [ Archives / Divers ] (ProgVal)

lundi 24 avril 2006 à 16:43:03 | Erreur de probabilité

ProgVal

Bonjour,
J'utilise Random définir aléatoirement les 4 valeurs de mon tableau. Problème: 9 fois sur 10, le tableau est: {6,8,0,6}. Ce nombre n'est donc pas vraiment aléatoire. Pouvez-vous me dire comment faire? Merci d'avance.

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int compte_tours;
    int choix[4];     //tableau random

    Randomize();
    for (compte_tours = 0;compte_tours <= RadioGroup1->ItemIndex; compte_tours++)
    {
        choix[compte_tours] = random(10);
    }
}
//---------------------------------------------------------------------------



Ps: j'utilise C++ Builder 3


lundi 24 avril 2006 à 16:54:38 | Re : Erreur de probabilité

meech

Membre Club
Réponse acceptée !

Salut,

Tu omets l'initialisation aléatoire du randomize() : typiquement, on peut utiliser la fonction srand avec le timestamp courant en paramètre (il change en permanence). Exemple :


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define randomize() (srand(time(0)))
#define random(x) (rand() % x)

int main(int argc, char *argv[])
{
  randomize();
  printf("%d\n", random(10));
  system("PAUSE"); 
  return 0;
}


lundi 24 avril 2006 à 17:23:14 | Re : Erreur de probabilité

ProgVal

Réponse acceptée !

A présent j'ai essayé de récupérer les centièmes de l'horloge de mon système, comme ceci:

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int compte_tours;
    struct  time t;


    for (compte_tours = 0;compte_tours <= RadioGroup1->ItemIndex; compte_tours++)
    {
        gettime(&t);
        choix[compte_tours] = t.ti_hund%10;
    }
}
//---------------------------------------------------------------------------

Mais les 4 valeurs de mon tableau sont identiques (logique car elles ont été prisent en même temps)


lundi 24 avril 2006 à 17:52:27 | Re : Erreur de probabilité

ProgVal

Réponse acceptée !

J'ai trouvé la réponse! il suffit d'appuyer 4 fois sur mon Button1 voici donc mon unité:


//---------------------------------------------------------------------------
#include <stdlib.h>
#include <vcl.h>
#pragma hdrstop

#include   <stdio.h>
#include   <dos.h>


#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int choix[4];     //tableau random
int test[4];     //tableau à tester, choisi par l'utilisateur dans les ComboBox
int nb_juste, nb_mal_places;
int compte_tours_clique;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    compte_tours_clique=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

    struct  time t;

    if (compte_tours_clique<=4)
    {
        gettime(&t);
        choix[compte_tours_clique] = t.ti_hund%10;
    compte_tours_clique = compte_tours_clique+1;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    test[1] = 0;
    test[2] = 0;
    test[3] = 0;
    test[4] = 0;
    int test[4];     //tableau à tester, choisi par l'utilisateur dans les ComboBox
    int compte_tours, compte_tours2;

    if (RadioGroup1->ItemIndex >= 0)
    {
        test[0] = StrToInt(ComboBox1->Text);
    }
    if (RadioGroup1->ItemIndex >= 1)
    {
        test[1] = StrToInt(ComboBox2->Text);
    }
    if (RadioGroup1->ItemIndex >= 2)
    {
        test[2] = StrToInt(ComboBox3->Text);
    }
    if (RadioGroup1->ItemIndex >= 3)
    {
        test[3] = StrToInt(ComboBox4->Text);
    }

    for (compte_tours = 0;compte_tours <= RadioGroup1->ItemIndex; compte_tours++)
    {
        if (choix[compte_tours] == test[compte_tours])
        {
            nb_juste = nb_juste+1;
        }
        for (compte_tours2 = 0;compte_tours2 <= RadioGroup1->ItemIndex; compte_tours2++)
        {
            if ((test[compte_tours] == choix[compte_tours2]) && (compte_tours != compte_tours))
            {
                nb_mal_places = nb_mal_places + 1;
            }
        }
    }
    Label5->Caption = nb_juste;
    Label6->Caption = nb_mal_places;
    Label8->Caption = (RadioGroup1->ItemIndex + 1) - (nb_juste + nb_mal_places);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    ShowMessage ("Appuyer 4 fois sur lancer");
}
//---------------------------------------------------------------------------

Merci quand même à Meech


lundi 24 avril 2006 à 17:53:59 | Re : Erreur de probabilité

ProgVal

Réponse acceptée !

Etant donné que le timer sont impressi, je pouvait aussi en utiliser comme mes plusieur clicks




Cette discussion est classé dans : erreur, tableau, compte, random, tours


Répondre à ce message

Sujets en rapport avec ce message

erreur vc++ 2005 [ par jerome86600 ] je vien d installer vc++2005 sur un pc qui a plusieur comptesj ai installé a partir du compte aministrateur et ca l air de bien marchermaintenant a pa Erreur sur delete[] et pb alocation mémoire [ par dan34 ] Salut,J'ai un soucis avec le bout de code suivant. En fait j'ai créé un objet qui contient un tableau de char dont j'alloue dynamiquement la taille en effacer un tableau [ par vectoriel ] Bonjour,J'ai créé un programme qui se sert d'un tableau de charactere a plusieurs reprises. J'ai donc besoin de vider le tableau a chaque fois mais je Random en C [ par Floriand60 ] Bonjour je viens de creer un petit code en C ou un utilisateur choisi 6 nombre qui sont dans un tableau ( il les tap l un apres l autre le tableau n e erreur dans la classe [ par Miss1 ] je n'arrive pas a compiler. le sujet est de crée une taille, un pointeur sur le 1er element du tableau, un constructeur, un constructeur par recopie , toujour pb avec la onction destructeur [ par Miss1 ] le pb dans la fonction c'est qu'il me dit qu'il ne reconnait pas la syntax et qu'il y a un pb avec new de meme avec strcpy tableau::tableau (const ta Linux - Acces aux fichiers [ par Ensias ] je programme en c sous linux  , et parfois lorsque j'utilise fopen il me sort une erreur de segmentation.est ce que quelqu'un connait le sens de cette Probleme tableau de pointeur vers des image [ par noetom ] Bonjour, Je fais un programme qui travaille avec un grand nombre d'image mais j'aimerai ne garder que 4 images à la fois en mémoire. J'ai donc une initialisation CSstring [ par moumouteb ] Voila je voudrais initialiser un tableau de carractère membre de classe. J'utilise une architecture MFC et donc la ligne suivante ne marche pas : cha


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.