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

C++ Discussion :

Fonction random C++


Sujet :

C++

  1. #21
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    @gbdivers
    Dans ton lien : C++11 Features in Visual C++ 11

    il est écrit :

    In VC11, we intend to completely support the C++11 Standard Library, modulo not-yet-implemented compiler features. (Additionally, VC11 won't completely implement the C99 Standard Library, which has been incorporated by reference into the C++11 Standard Library. Note that VC10 and VC11 already have <stdint.h>.) Here's a non-exhaustive list of the changes we're making:
    Donc en fait ils n'ont pas fait de tableau des features présentes ou absentes pour la biblio car ils considèrent avoir tout implémenté dans vs2010, sauf si une feature du core language manque.

    Donc effectivement en pratique tout est présent excepté des fonctions comme emplace (qui demande des variadic templates), ou encore les constructeurs de conteneurs prenant des std::initializer_list, ce genre de chose.

    (Du coup pour ce qui est de la biblio standard je trouve vs un peu en avance sur gcc, au moins on peut faire des <regex> sans se prendre des exceptions bizarres ou des résultats faux...)

  2. #22
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Citation Envoyé par Arzar Voir le message
    Donc en fait ils n'ont pas fait de tableau des features présentes ou absentes pour la biblio car ils considèrent avoir tout implémenté dans vs2010, sauf si une feature du core language manque.
    Tu confonds VS2010 (VC10) avec VS2012 (VC11). On s'embrouille tous.

  3. #23
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 333
    Billets dans le blog
    2
    Par défaut
    Je ne comprend pas tout dans cette discussion, mais si vous prenez la liste des nouvelles fonctionnalités de vs2012 (c'est à dire des choses qui n'étaient pas présentes dans vs2010), il y a tout de même pas mal de choses!

  4. #24
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Tu confonds VS2010 (VC10) avec VS2012 (VC11). On s'embrouille tous.
    Raaaa damned, j'essaye d'être pourtant toujours sur mes gardes lorsqu'il s'agit de ces fichus versions de VS.

    2010 (vc10) donc
    Malheureusement, il n'y a en effet à ma connaissances pas de document résumant l'absence/présence de feature pour la biblio standard de vs2010.

    On peut se faire un idée par déduction. vs2010 contient
    + tout le TR1
    +
    Citation Envoyé par what's new in Visual Studio 2010
    Rvalue references are also used to implement the new unique_ptr class, which is a safer smart pointer type than the auto_ptr class. The unique_ptr class is movable but not copyable, implements strict ownership semantics without affecting safety, and works well with containers that are aware of rvalue references. The auto_ptr class is deprecated.
    Fifteen new functions, for example, find_if_not, copy_if, and is_sorted, have been added to the <algorithm> header.
    In the <memory> header, the new make_shared function is a convenient, robust, and efficient way to make a shared pointer to an object at the same time the object is constructed.
    Singly linked lists are supported by the <forward_list> header.
    The new cbegin, cend, crbegin, and crend member functions provide a const_iterator that moves forward or backward through a container.
    The <system_error> header and related templates support the processing of low-level system errors.
    Members of the exception_ptr class can be used to transport exceptions between threads.
    The <codecvt> header supports converting various encodings of Unicode characters to other encodings.
    The <allocators> header defines several templates that help allocate and free memory blocks for node-based containers.
    There are numerous updates to the <random> header.
    Cette biblio étaient donc déjà pas trop mal pour une lib pré datant le standard d'un an. De mémoire, il y a par contre un gros trou noir pour tout ce qui touche aux threads : pas de header <thread> (std::thread, std::future, std::async etc) ni de header <atomic>

  5. #25
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 768
    Par défaut
    Citation Envoyé par Arzar Voir le message
    Il me semble que le moyen le plus court et le plus simple avec <random> du C++11 pour obtenir un nombre aléatoire dans un intervalle donné est le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <random>
    #include <time.h>
     
    std::default_random_engine rd_engine(time(NULL));
     
    int rand_(int min, int max)
    {
       std::uniform_int_distribution<> rd_dist(min, max);
       return rd_dist(rd_engine);
    }
     
    int main()
    {
       int r = rand_(1, 6); // tirage équivalent à celui d'un dé 6
    }
    Donc un peu lourdingue...
    Ce qui est dommage avec la lib <random> du C++11 c'est qu'elle est clairement très puissante (on peut sans trop de difficulté sortir des distributions normales, binomiales etc), très customisable, mais il manque une fonction comme rand_ que j'ai définit plus haut et qui en une ligne de code couvrirait la vaste majorité des usages...

    Du coup, je n'utilise quasi jamais <random> de C++11, mais le classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    srand(time(NULL)); // initialisation de rand
    for(i=0; i<5; i++)
    {
       z = rand()%t;
    }
    Bêtement un srand + rand/modulo est plus court à écrire et suffit largement pour quasiment tout :\
    std::random_device ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Forth] Fonction random
    Par kamfezz dans le forum Autres langages
    Réponses: 3
    Dernier message: 16/04/2023, 15h33
  2. [Fortran 77] Fonction random
    Par ajsd0208 dans le forum Fortran
    Réponses: 1
    Dernier message: 15/07/2005, 13h58
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 15h20
  4. [LG]Fonction random
    Par platoon5 dans le forum Langage
    Réponses: 16
    Dernier message: 22/02/2005, 21h47
  5. Fonction Random en Assembleur
    Par chidi dans le forum Assembleur
    Réponses: 5
    Dernier message: 21/05/2004, 11h16

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