Résultats de 1 à 3 sur 3

Sujet : fonction qsort + probabilités

  1. #1

    fonction qsort + probabilités

    voila j\'aimerai que qqun m\'explique le fonctionnement exacte de la fonction qsort j\'ai pas tres bien compris ce que c\'etait que la fonction de comparaison qu\'elle devait prendre en argument...

    et comment faire pour simuler la probabilite cad une fonction qui prend en argument un coefficient \"k\" est qui rend 1 avec une probabilite de \"k\" et 0 avec une probabilite de \"1-k\" moi j\'ai pensé utiliser random mais ca m\'a l\'air compliqué et beaucoup trop lourd pour une si petite tache....

    merci pour votre aide :lol:

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Pour tout ce qui est des probabilités, et en règle générale tout ce qui nécessite des paramètres aléatoires, en C on utilise rand() couplée à un srand(), la plupart du temps en prenant comme paramètre l\'heure...

    Pour qsort(), étudions son prototype :

    Code:
     void qsort(void *base, size_t nel, size_t width,
           int (*compar)(const void *, const void *));
    Cette fonction trie un tableau de \"nel\" éléments dont le premier élément est pointé par \"base\". Le paramètre \"width\" correspond à la taille d\'un élément du tableau. Le dernier élément est un pointeur vers une fonction qui prend en argument deux éléments du type d\'éléments du tableau : cette fonction, c\'est au développeur de l\'implémenter. Elle doit retourner :

    (-1) si le premier élément est < au second
    0 si les éléments sont égaux
    1 si le premier élément est > au second

    La notion de <, > ou = dépend du dévelppeur : s\'il veut que (a > b) il lui suffit d\'implémenter sa fonction dans ce sens. La fonction qsort() est une des fonctions les plus évoluées de la library strandard du C, on voit tout de suite pourquoi :wink:

    Voilà, j\'espère que tu comprends un peu mieux désormais

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    6 517
    Hop hop, je fais une réponse tardive.

    D\'abord mettre au début du code :
    srand(time(NULL));
    Pour réinistialiser le random.

    Puis voici une petite fonction qui doit faire ce que tu demandes, avec 0<=k<=1.

    void proba(int k)
    {
    return (float(rand())/RAND_MAX < k) ? 0 : 1;
    }
    Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
    N'oubliez pas le Tag [Résolu]http://www.ressources.moteurprog.com...rum/Resolu.gif.

    Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé