Futura Sciences
Image de la rubrique en cours

Forum FS Generation

Précédent   Vous êtes ici : Forum FS Generation » Informatique » Logiciel - Software - Open Source

Découvrir d'autres sujets sur ces thèmes : ,


Réponse
Vieux 01/03/2006, 11h09   Sujet rand dans langage c - Message #1
merak
 
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 ...
merak est déconnecté   Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

   
Vieux 01/03/2006, 11h24   Sujet rand dans langage c - Message #2
matthias
 
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).
matthias est déconnecté   Réponse avec citation
Vieux 01/03/2006, 11h42   Sujet rand dans langage c - Message #3
merak
 
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
merak est déconnecté   Réponse avec citation
Vieux 02/03/2006, 22h38   Sujet rand dans langage c - Message #4
fderwelt
 
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
Re : rand dans langage c
Citation:
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
fderwelt est déconnecté   Réponse avec citation
Vieux 03/03/2006, 08h56   Sujet rand dans langage c - Message #5
matthias
 
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
Re : rand dans langage c
Citation:
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 */
matthias est déconnecté   Réponse avec citation
Vieux 03/03/2006, 09h19   Sujet rand dans langage c - Message #6
fderwelt
 
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
Re : rand dans langage c
Citation:
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
fderwelt est déconnecté   Réponse avec citation
Vieux 03/03/2006, 09h57   Sujet rand dans langage c - Message #7
matthias
 
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
Re : rand dans langage c
Citation:
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.
matthias est déconnecté   Réponse avec citation
Vieux 03/03/2006, 10h03   Sujet rand dans langage c - Message #8
fderwelt
 
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
Re : rand dans langage c
Citation:
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 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
fderwelt est déconnecté   Réponse avec citation
Vieux 06/03/2006, 00h12   Sujet rand dans langage c - Message #9
Gre
 
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
Re : rand dans langage c
Citation:
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)
Gre est déconnecté   Réponse avec citation
Vieux 06/03/2006, 13h36   Sujet rand dans langage c - Message #10
matthias
 
Date d'inscription: février 2005
Localisation: IdF
Messages: 4 440
Re : rand dans langage c
Citation:
Posté par Gre
Si si c'est garanti... sinon tu n'es pas aux normes.

merci de la confirmation.
matthias est déconnecté   Réponse avec citation
Vieux 06/03/2006, 20h33   Sujet rand dans langage c - Message #11
fderwelt
 
Date d'inscription: février 2006
Âge: 48
Messages: 1 861
Re : rand dans langage c
Citation:
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
fderwelt est déconnecté   Réponse avec citation
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
Découverte historique : un algèbre dans le langage courant (Forum Epistémologie et Logique)
Problème dans une fonction en Langage C (Forum Logiciel - Software - Open Source)
Lecture dans un fichier texte en Langage C (Forum Logiciel - Software - Open Source)
Matlab...Help... rand (Forum Logiciel - Software - Open Source)










A voir aussi (Futura Sciences n'est pas responsable du contenu de ces publicités)
Réponse


Dossiers à découvrir

Outils
Modes d'affichage

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

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Les dernières actualités
24/07 18:35 - Quasars : le spectre bleu autour du trou noir est bien là !
24/07 14:25 - Knol, l'encyclopédie en ligne de Google, est lancée
24/07 11:37 - Bientôt la fin de la crise de l'oxygène solaire ?
24/07 09:31 - Un moteur actionné par la lumière
23/07 17:28 - Le volcanisme à l'origine de l'extinction marine du Crétacé supérieur ?
23/07 14:54 - Les mouches seraient sensibles au champ magnétique
23/07 11:31 - Faut-il jeter de la chaux dans les océans pour refroidir la planète ?

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