| Découvrir d'autres sujets sur ces thèmes : langage, rand |
|
01/03/2006, 11h09
|
Sujet rand dans langage c - Message #1
|
Date d'inscription: avril 2005
Localisation: bordeaux/gradignan
Âge: 22
Messages: 94
|
rand dans langage c
Bonjour
coment utiliser la fonction rand ? j'ai tout essayé mais rien ne marche ...
|
|
|
|
Aujourd'hui
|
|
|
|
Liens sponsorisés
|
|
|
|
|
01/03/2006, 11h24
|
Sujet rand dans langage c - Message #2
|
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
|
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).
|
|
|
|
01/03/2006, 11h42
|
Sujet rand dans langage c - Message #3
|
Date d'inscription: avril 2005
Localisation: bordeaux/gradignan
Âge: 22
Messages: 94
|
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
|
|
|
|
02/03/2006, 22h38
|
Sujet rand dans langage c - Message #4
|
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
|
Re : rand dans langage c
Posté 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
|
|
|
|
03/03/2006, 08h56
|
Sujet rand dans langage c - Message #5
|
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
|
Re : rand dans langage c
Posté 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 */
|
|
|
|
03/03/2006, 09h19
|
Sujet rand dans langage c - Message #6
|
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
|
Re : rand dans langage c
Posté 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
|
|
|
|
03/03/2006, 09h57
|
Sujet rand dans langage c - Message #7
|
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
|
Re : rand dans langage c
Posté 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.
|
|
|
|
03/03/2006, 10h03
|
Sujet rand dans langage c - Message #8
|
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
|
Re : rand dans langage c
Posté 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 2 32?
"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
|
|
|
|
06/03/2006, 00h12
|
Sujet rand dans langage c - Message #9
|
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
|
Re : rand dans langage c
Posté 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.
__________________
War does not decide who's right, but who's left. (Bertrand Russell)
|
|
|
|
06/03/2006, 13h36
|
Sujet rand dans langage c - Message #10
|
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
|
Re : rand dans langage c
Posté par Gre
Si si c'est garanti... sinon tu n'es pas aux normes.
merci de la confirmation.
|
|
|
|
06/03/2006, 20h33
|
Sujet rand dans langage c - Message #11
|
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
|
Re : rand dans langage c
Posté 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
|
|
|
|
|
 |
Bienvenue |
 |
Si ceci est votre première visite, vous devez vous inscrire avant de pouvoir envoyer des messages. En étant inscrit vous pourrez poster votre question, participer aux débats, joindre vos images... alors n'attendez-plus, cela vous prendra 1 minute !
Pour commencer à lire les messages, depuis la page d'accueil des forums, sélectionnez le forum qui vous tente et partez ensuite à sa découverte...
|
 |
Publicité |
 |
|
| A voir aussi (Futura Sciences n'est pas responsable du contenu de ces publicités) |
|
|
| Outils |
|
|
| Modes d'affichage |
Mode linéaire
|
Règles de messages
|
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui
Le code HTML peut être employé : non
|
|
|
Fuseau horaire GMT +2. Il est actuellement 21h24.
Propulsé par vBulletin
Copyright © 2000 - 2008, Jelsoft Enterprises Ltd. Tous droits réservés.
Traduction par l'association vBulletin francophone
|
|