rand dans langage c
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

rand dans langage c



  1. #1
    invite06c35f4d

    rand dans langage c


    ------

    Bonjour

    coment utiliser la fonction rand ? j'ai tout essayé mais rien ne marche ...

    -----

  2. #2
    invitec314d025

    Re : rand dans langage c

    Comment ça rien ne marche ? Tu pourrais préciser un peu ?

    En C la fonction rand ne prend pas d'argument, donc un appel se fait sous la forme "rand()". Elle renvoit un int compris dans [0;RAND_MAX].
    Pour ne pas avoir toujours la même série de valeurs, il faut initialiser la "graine" de manière variable avec srand ("srand(graine)"). Tu peux prendre l'heure par exemple pour initialiser. Par défaut, tout se passe comme si tu avais fait un srand(1).

  3. #3
    invite06c35f4d

    Re : rand dans langage c

    voici mon programme , enfin la correction du prof carrement ,elle ne marche pas ....

    et come tu l'as dis j'ai fait avec l'horloge de l'ordi

  4. #4
    invite6de5f0ac

    Re : rand dans langage c

    Citation Envoyé par merak
    voici mon programme , enfin la correction du prof carrement ,elle ne marche pas ....

    et come tu l'as dis j'ai fait avec l'horloge de l'ordi
    Bonsoir,

    J'aimerais bien voir le source en question...

    Une fois de plus matthias a raison (petite allusion privée au forum maths ), mais il faut bien faire attention aux prototypes:

    #include <stdlib.h>
    void srand (unsigned seed) ;
    int rand (void) ;

    Mais le type unsigned n'est pas ce qu'on fait de plus portable (et int non plus, d'ailleurs)! C'est pour ça que j'aimerais voir comment tu utilises l'horloge du computre.

    -- françois

  5. A voir en vidéo sur Futura
  6. #5
    invitec314d025

    Re : rand dans langage c

    Citation Envoyé par fderwelt
    Mais le type unsigned n'est pas ce qu'on fait de plus portable (et int non plus, d'ailleurs)! C'est pour ça que j'aimerais voir comment tu utilises l'horloge du computre.
    Et le type time_t retourné par time n'est pas toujours implémenté de la même manière (ça peut être entier ou flottant). Mais bon au pire tu fais un cast en unsigned et c'est réglé. La seule chose qui compte c'est que le résultat dépende de l'heure.


    donc : srand(time(NULL)); /* pas de warning en general */
    ou : srand((unsigned int)time(NULL)); /* pour les maniaques */

  7. #6
    invite6de5f0ac

    Re : rand dans langage c

    Citation Envoyé par matthias
    Et le type time_t retourné par time n'est pas toujours implémenté de la même manière (ça peut être entier ou flottant). Mais bon au pire tu fais un cast en unsigned et c'est réglé. La seule chose qui compte c'est que le résultat dépende de l'heure.


    donc : srand(time(NULL)); /* pas de warning en general */
    ou : srand((unsigned int)time(NULL)); /* pour les maniaques */
    Oulà! C'est casse-gueule à mon avis... Si time_t est typedef long (comme en Borland C++) ça passe, mais si c'est un flottant... Mais comme tu dis, l'essentiel est d'avoir quelque chose de:
    (1) convertible en unsigned;
    (2) qui dépende du temps de manière non prévisible, autrement dit qui change toutes les quelques millisecondes au pire.

    N'importe quelle variable système un peu dynamique doit pouvoir coller. Mais time_t... à moins qu'il n'y ait une fonction plus "portable", style nombre de millisecondes depuis la naissance de Guillaume Portail, mais de mémoire je ne vois pas.

    -- françois

  8. #7
    invitec314d025

    Re : rand dans langage c

    Citation Envoyé par fderwelt
    (2) qui dépende du temps de manière non prévisible, autrement dit qui change toutes les quelques millisecondes au pire.
    Mouais. srand, tu ne l'appelles qu'une fois, je ne crois pas que ce soit nécessaire d'avoir une valeur qui change toutes les millisecondes.
    Pour le flottant, j'ai vu ça sur Internet, mais je ne garantis rien. De toute façon, même si c'est possible, je ne crois pas que quiconque se soit amusé à l'implémenter de cette manière.
    Surtout que time est censée retourner le temps écoulé en secondes depuis le 1er janvier 1970 à 0 heure GMT (pareil, trouvé sur Internet, pas garanti), donc ce n'est pas juste l'heure de la journée.

  9. #8
    invite6de5f0ac

    Re : rand dans langage c

    Citation Envoyé par matthias
    Surtout que time est censée retourner le temps écoulé en secondes depuis le 1er janvier 1970 à 0 heure GMT (pareil, trouvé sur Internet, pas garanti), donc ce n'est pas juste l'heure de la journée.
    C'est vrai que pour srand(), à une seconde près ça passe. Encore que, depuis 1970, on commence à frôler les 32 bits... Je suppose que ça cycle quand on dépasse? A quand le bug de la seconde 232?

    "Les seules pertes de mémoire causées par le bug de l'an 2000 sont celles de ceux qui avaient annoncé la catastrophe."

    -- françois

  10. #9
    invite7a8ce750

    Re : rand dans langage c

    Citation Envoyé par matthias
    [...]
    Surtout que time est censée retourner le temps écoulé en secondes depuis le 1er janvier 1970 à 0 heure GMT (pareil, trouvé sur Internet, pas garanti), donc ce n'est pas juste l'heure de la journée.
    Si si c'est garanti... sinon tu n'es pas aux normes.
    Le temps est donné en temps UNIX.

  11. #10
    invitec314d025

    Re : rand dans langage c

    Citation Envoyé par Gre
    Si si c'est garanti... sinon tu n'es pas aux normes.
    merci de la confirmation.

  12. #11
    invite6de5f0ac

    Re : rand dans langage c

    Citation Envoyé par matthias
    merci de la confirmation.
    Merci à Gre aussi...

    J'en étais resté à la norme ANSI C++ 90X, qui n'avait jamais été finalisée. Mais Borland C++ V6.0 est, lui, supposé complètement compatible, y compris la STL.

    -- françois

Discussions similaires

  1. Découverte historique : un algèbre dans le langage courant
    Par invitea7b3a64f dans le forum Epistémologie et Logique (archives)
    Réponses: 9
    Dernier message: 16/12/2007, 11h52
  2. Problème dans une fonction en Langage C
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 04/05/2007, 23h25
  3. Lecture dans un fichier texte en Langage C
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 16/04/2007, 11h04
  4. Matlab...Help... rand
    Par invite48d4167a dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 08/11/2005, 11h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...