Je n'arrive pas à générer de nombres aléatoires avec random() :-(
time_t t=time() srandom(t) ne fait rien non plus
Montrez le code.
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
titi
titi wrote:
Harpo wrote:
titi wrote:
Je n'arrive pas à générer de nombres aléatoires avec random() :-(
time_t t=time() srandom(t) ne fait rien non plus
Montrez le code.
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
La faq: 14.9 Comment construire un générateur de nombres aléatoires ? 14.10 Comment obtenir un nombre pseudo-aléatoire dans un intervalle ? 14.11 À chaque lancement de mon programme, les nombres pseudo-aléatoires sont toujours les mêmes ?
A quoi sert random?
titi wrote:
Harpo wrote:
titi wrote:
Je n'arrive pas à générer de nombres aléatoires avec random() :-(
time_t t=time()
srandom(t)
ne fait rien non plus
Montrez le code.
quelque chose comme ça:
ex1.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
int rnd=random();
printf("%i",rnd);
}
Le nombre généré était toujours le même.
ex2.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
time_t t=time();
int rnd=srandom(t); // ou srandom(NULL)
printf("%i",rnd);
}
Il y a une erreur.
La faq:
14.9 Comment construire un générateur de nombres aléatoires ?
14.10 Comment obtenir un nombre pseudo-aléatoire dans un intervalle ?
14.11 À chaque lancement de mon programme, les nombres pseudo-aléatoires
sont toujours les mêmes ?
Je n'arrive pas à générer de nombres aléatoires avec random() :-(
time_t t=time() srandom(t) ne fait rien non plus
Montrez le code.
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
La faq: 14.9 Comment construire un générateur de nombres aléatoires ? 14.10 Comment obtenir un nombre pseudo-aléatoire dans un intervalle ? 14.11 À chaque lancement de mon programme, les nombres pseudo-aléatoires sont toujours les mêmes ?
A quoi sert random?
lhabert
titi :
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
C'est normal. Mais si tu fais d'autres appels à random, tu vas obtenir des nombres différents, avec un assez longue période, c'est en ce sens que c'est un générateur de nombres aléatoire.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
Pour bien faire, il faudrait que tu nous dise de quelle erreur il s'agit. Bon, en l'occurence, c'est inutile parce que l'erreur est suffisament basique, mais dans un cas plus compliqué, ça peut être indispensable.
Je cite le manuel :
void srandom(unsigned int seed);
Donc srandon ne renvoie pas de résultat, donc ton « int rnd=srandon(t) » n'a pas de sens.
The srandom() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by random().
Bref, il faut que tu fasses un « srandom(t); », et ensuite, tu peux appeller la fonction « random ».
titi :
quelque chose comme ça:
ex1.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
int rnd=random();
printf("%i",rnd);
}
Le nombre généré était toujours le même.
C'est normal. Mais si tu fais d'autres appels à random, tu vas obtenir des
nombres différents, avec un assez longue période, c'est en ce sens que c'est
un générateur de nombres aléatoire.
ex2.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
time_t t=time();
int rnd=srandom(t); // ou srandom(NULL)
printf("%i",rnd);
}
Il y a une erreur.
Pour bien faire, il faudrait que tu nous dise de quelle erreur il s'agit.
Bon, en l'occurence, c'est inutile parce que l'erreur est suffisament
basique, mais dans un cas plus compliqué, ça peut être indispensable.
Je cite le manuel :
void srandom(unsigned int seed);
Donc srandon ne renvoie pas de résultat, donc ton « int rnd=srandon(t) » n'a
pas de sens.
The srandom() function sets its argument as the seed for a new
sequence of pseudo-random integers to be returned by random().
Bref, il faut que tu fasses un « srandom(t); », et ensuite, tu peux appeller
la fonction « random ».
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
C'est normal. Mais si tu fais d'autres appels à random, tu vas obtenir des nombres différents, avec un assez longue période, c'est en ce sens que c'est un générateur de nombres aléatoire.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
Pour bien faire, il faudrait que tu nous dise de quelle erreur il s'agit. Bon, en l'occurence, c'est inutile parce que l'erreur est suffisament basique, mais dans un cas plus compliqué, ça peut être indispensable.
Je cite le manuel :
void srandom(unsigned int seed);
Donc srandon ne renvoie pas de résultat, donc ton « int rnd=srandon(t) » n'a pas de sens.
The srandom() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by random().
Bref, il faut que tu fasses un « srandom(t); », et ensuite, tu peux appeller la fonction « random ».
Harpo
titi wrote:
ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
Oui, et c'est une excellente chose.
Il y a une erreur.
Non.
Reli le manuel. Ce sont des nombres dont la séquence est aléatoire mais même pas vraiment aléatoire. C'est nécessaire que la séquence soit la même quand on veut tester certain programmes, pour des benchmarks ou des choses comme ça.
Pour avoir un nombre imprévisible, utilise d'abord srandom() en lui fournissant un nombre que tu peux trouver par times() ou clock() selon ce que tu as de disponible sur ta plateforme, sous GNU/Linux tu dois avoir times() qui doit être correct pour un usage artisanal.
-- http://patrick.davalan.free.fr/
titi wrote:
ex1.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
int rnd=random();
printf("%i",rnd);
}
Le nombre généré était toujours le même.
Oui, et c'est une excellente chose.
Il y a une erreur.
Non.
Reli le manuel.
Ce sont des nombres dont la séquence est aléatoire mais même pas
vraiment aléatoire.
C'est nécessaire que la séquence soit la même quand on veut tester
certain programmes, pour des benchmarks ou des choses comme ça.
Pour avoir un nombre imprévisible, utilise d'abord srandom() en lui
fournissant un nombre que tu peux trouver par times() ou clock() selon
ce que tu as de disponible sur ta plateforme, sous GNU/Linux tu dois
avoir times() qui doit être correct pour un usage artisanal.
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
Oui, et c'est une excellente chose.
Il y a une erreur.
Non.
Reli le manuel. Ce sont des nombres dont la séquence est aléatoire mais même pas vraiment aléatoire. C'est nécessaire que la séquence soit la même quand on veut tester certain programmes, pour des benchmarks ou des choses comme ça.
Pour avoir un nombre imprévisible, utilise d'abord srandom() en lui fournissant un nombre que tu peux trouver par times() ou clock() selon ce que tu as de disponible sur ta plateforme, sous GNU/Linux tu dois avoir times() qui doit être correct pour un usage artisanal.
-- http://patrick.davalan.free.fr/
Hamiral
titi wrote:
Je n'arrive pas à générer de nombres aléatoires avec random() :-(
int main(void) { srand(time(NULL)); printf("%dn", rand());
return 0; }
Perso, je ne connaissais pas random() et srandom(), mais man m'indique que c'est du C BSD. Pour la portabilité, utilise plutôt rand() et srand(), qui sont POSIX.
-- Hamiral
titi wrote:
Je n'arrive pas à générer de nombres aléatoires avec random() :-(
int main(void) {
srand(time(NULL));
printf("%dn", rand());
return 0;
}
Perso, je ne connaissais pas random() et srandom(), mais man m'indique que
c'est du C BSD. Pour la portabilité, utilise plutôt rand() et srand(), qui
sont POSIX.
int main(void) { srand(time(NULL)); printf("%dn", rand());
return 0; }
Perso, je ne connaissais pas random() et srandom(), mais man m'indique que c'est du C BSD. Pour la portabilité, utilise plutôt rand() et srand(), qui sont POSIX.
-- Hamiral
Pierre Maurette
[...]
Reli le manuel.
Tsst tsst. S'agit-il de le relire ou de le relier, ce p..... de manuel ?
-- Pierre Maurette
[...]
Reli le manuel.
Tsst tsst. S'agit-il de le relire ou de le relier, ce p..... de manuel
?
Tsst tsst. S'agit-il de le relire ou de le relier, ce p..... de manuel
Et pour les mise-à-jour tu fais comment ?
-- http://patrick.davalan.free.fr/
titi
Luc Habert wrote:
titi :
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
C'est normal. Mais si tu fais d'autres appels à random, tu vas obtenir des nombres différents, avec un assez longue période, c'est en ce sens que c'est un générateur de nombres aléatoire.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
Pour bien faire, il faudrait que tu nous dise de quelle erreur il s'agit. Bon, en l'occurence, c'est inutile parce que l'erreur est suffisament basique, mais dans un cas plus compliqué, ça peut être indispensable.
ex2.c: In function 'main': ex2.c:8: warning: passing argument 1 of 'srandom' makes integer from pointer without a cast ex2.c:8: error: void value not ignored as it ought to be /bin/bash: ./ex2: Aucun fichier ou répertoire de ce type
Je cite le manuel :
void srandom(unsigned int seed);
Donc srandon ne renvoie pas de résultat, donc ton « int rnd=srandon(t) » n'a pas de sens.
The srandom() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by random().
Bref, il faut que tu fasses un « srandom(t); », et ensuite, tu peux appeller la fonction « random ».
J'en ai tellement à lire que je lis en diagonale! ;-) Il y a toujours la solution dans le manuel, il suffit de la trouver... Vous m'avez évité une lecture approfondie fastidieuse, merci à tous! :-)
Pour le plaisir:
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); srandom(t); int rnd=rand(); printf("%i",rnd); rnd=random(); printf("%i",rnd); } gcc -o ex2 ex2.c;./ex2 /bin/bash: line 1: 1408 Erreur de segmentation (core dumped) ./ex2
:-) !
Luc Habert wrote:
titi :
quelque chose comme ça:
ex1.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
int rnd=random();
printf("%i",rnd);
}
Le nombre généré était toujours le même.
C'est normal. Mais si tu fais d'autres appels à random, tu vas obtenir des
nombres différents, avec un assez longue période, c'est en ce sens que
c'est un générateur de nombres aléatoire.
ex2.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
time_t t=time();
int rnd=srandom(t); // ou srandom(NULL)
printf("%i",rnd);
}
Il y a une erreur.
Pour bien faire, il faudrait que tu nous dise de quelle erreur il s'agit.
Bon, en l'occurence, c'est inutile parce que l'erreur est suffisament
basique, mais dans un cas plus compliqué, ça peut être indispensable.
ex2.c: In function 'main':
ex2.c:8: warning: passing argument 1 of 'srandom' makes integer from pointer
without a cast
ex2.c:8: error: void value not ignored as it ought to be
/bin/bash: ./ex2: Aucun fichier ou répertoire de ce type
Je cite le manuel :
void srandom(unsigned int seed);
Donc srandon ne renvoie pas de résultat, donc ton « int rnd=srandon(t) »
n'a pas de sens.
The srandom() function sets its argument as the seed for a new
sequence of pseudo-random integers to be returned by random().
Bref, il faut que tu fasses un « srandom(t); », et ensuite, tu peux
appeller la fonction « random ».
J'en ai tellement à lire que je lis en diagonale! ;-)
Il y a toujours la solution dans le manuel, il suffit de la trouver...
Vous m'avez évité une lecture approfondie fastidieuse, merci à tous! :-)
Pour le plaisir:
ex2.c:
# include <stdio.h>
# include <stdlib.h>
main (void)
{
time_t t=time();
srandom(t);
int rnd=rand();
printf("%i",rnd);
rnd=random();
printf("%i",rnd);
}
gcc -o ex2 ex2.c;./ex2
/bin/bash: line 1: 1408 Erreur de segmentation (core dumped) ./ex2
quelque chose comme ça: ex1.c: # include <stdio.h> # include <stdlib.h>
main (void) { int rnd=random(); printf("%i",rnd); }
Le nombre généré était toujours le même.
C'est normal. Mais si tu fais d'autres appels à random, tu vas obtenir des nombres différents, avec un assez longue période, c'est en ce sens que c'est un générateur de nombres aléatoire.
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); int rnd=srandom(t); // ou srandom(NULL) printf("%i",rnd); }
Il y a une erreur.
Pour bien faire, il faudrait que tu nous dise de quelle erreur il s'agit. Bon, en l'occurence, c'est inutile parce que l'erreur est suffisament basique, mais dans un cas plus compliqué, ça peut être indispensable.
ex2.c: In function 'main': ex2.c:8: warning: passing argument 1 of 'srandom' makes integer from pointer without a cast ex2.c:8: error: void value not ignored as it ought to be /bin/bash: ./ex2: Aucun fichier ou répertoire de ce type
Je cite le manuel :
void srandom(unsigned int seed);
Donc srandon ne renvoie pas de résultat, donc ton « int rnd=srandon(t) » n'a pas de sens.
The srandom() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by random().
Bref, il faut que tu fasses un « srandom(t); », et ensuite, tu peux appeller la fonction « random ».
J'en ai tellement à lire que je lis en diagonale! ;-) Il y a toujours la solution dans le manuel, il suffit de la trouver... Vous m'avez évité une lecture approfondie fastidieuse, merci à tous! :-)
Pour le plaisir:
ex2.c: # include <stdio.h> # include <stdlib.h>
main (void) { time_t t=time(); srandom(t); int rnd=rand(); printf("%i",rnd); rnd=random(); printf("%i",rnd); } gcc -o ex2 ex2.c;./ex2 /bin/bash: line 1: 1408 Erreur de segmentation (core dumped) ./ex2
:-) !
lhabert
titi :
/bin/bash: line 1: 1408 Erreur de segmentation (core dumped) ./ex2
Ah oui, bien sur : la fonction « time » prend un argument, or tu n'en as pas mis. Si tu avais inclus time.h, le compilateur t'aurait indiqué l'erreur.
titi :
/bin/bash: line 1: 1408 Erreur de segmentation (core dumped) ./ex2
Ah oui, bien sur : la fonction « time » prend un argument, or tu n'en as pas
mis. Si tu avais inclus time.h, le compilateur t'aurait indiqué l'erreur.