Langage c : les fonctions rand() et srand( )
Résolu/Fermé
marven23
Messages postés
71
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
20 août 2013
-
13 juil. 2009 à 23:42
pacorabanix - 28 oct. 2009 à 03:15
pacorabanix - 28 oct. 2009 à 03:15
A voir également:
- Srand en c
- Langage ascii - Guide
- Débuter langage batch windows - Guide
- Que veut dire le rectangle en langage sms - Forum Nokia
- Symboles langage sms ✓ - Forum Mobile
- Quotient rationnel langage c ✓ - Forum C
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 833
13 juil. 2009 à 23:44
13 juil. 2009 à 23:44
Il faut mettre le srand(time(NULL)) avant la boucle for. Cette instruction n'est à appeler qu'une seule fois.
BONJOUR,
je débute en c et je voulais juste savoir, j'ai une fonction :tirage aléatoire
int rand_ab(int a, int b) {
int valeur;
srand (time(null));
valeur=rand( )%(b+1);
while (valeur < a) {
valeur= rand( )%(b+1);
return valeur;
}
veuillez me corriger si j'ai fais des erreurs, je ne comprend pas la fonction se qu'elle fait ? srand ?
merci d'avance
je débute en c et je voulais juste savoir, j'ai une fonction :tirage aléatoire
int rand_ab(int a, int b) {
int valeur;
srand (time(null));
valeur=rand( )%(b+1);
while (valeur < a) {
valeur= rand( )%(b+1);
return valeur;
}
veuillez me corriger si j'ai fais des erreurs, je ne comprend pas la fonction se qu'elle fait ? srand ?
merci d'avance
marven23
Messages postés
71
Date d'inscription
samedi 11 juillet 2009
Statut
Membre
Dernière intervention
20 août 2013
2
14 juil. 2009 à 00:00
14 juil. 2009 à 00:00
Merci infiniment fiddy
ça marche parfaitement :-)
ça marche parfaitement :-)
seed rand, srand, il faut seed rand(), seed = nourrir.
Ca permet, si c'est bien fait (http://www.metasploit.com/users/hdm/tools/debian-openssl/) de guarantir que random ne donnera pas deux fois le meme resultats.
tst@laptop # cat tst.c
int main()
{
srand(1);
printf("%d\n", rand());
}
tst@laptop # ./a.out
1804289383
tst@laptop # ./a.out
1804289383
tst@laptop # (pts/0) [~]
Voila l'interet, time() c'est bien, mais time() * getpid() c'est mieux si on doit executer le programme plusieures fois et plus rapidement (c'est moins previsible au moins, c'est le minimum syndical).
Ca permet, si c'est bien fait (http://www.metasploit.com/users/hdm/tools/debian-openssl/) de guarantir que random ne donnera pas deux fois le meme resultats.
tst@laptop # cat tst.c
int main()
{
srand(1);
printf("%d\n", rand());
}
tst@laptop # ./a.out
1804289383
tst@laptop # ./a.out
1804289383
tst@laptop # (pts/0) [~]
Voila l'interet, time() c'est bien, mais time() * getpid() c'est mieux si on doit executer le programme plusieures fois et plus rapidement (c'est moins previsible au moins, c'est le minimum syndical).
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 833
14 juil. 2009 à 01:16
14 juil. 2009 à 01:16
Ouais, mais getpid() n'est pas portable...