il y a t'il une fonction de la STL ( ou STD) qui renvoi un nbre alléatoire ( comme random de stdlib.h)
15 réponses
heinquoi
Bonjour,
je cherche a faire un tableau de nombres alléatoires. Et je n'ai pas trouvé
de fonction en c++ dans la std.
je me suis alors retourné vers le random de stdlib.h et je pensait rajouté
cstdlib a mon prjet. Mais random ne fait plus partie de stdlib.h
j'ai besoin d'une fonction qui retourne un nombre alléatoire entre 0 et un
maximum que je fournis.
vector<int> v;
for (int n=0; n<25 ; n++) v.insert(v.begin(), random (8 sqrt
(sizeof(int))));
une idée ?
H
On Tue, 8 Jun 2004 19:21:49 +0200, "Alexandre" wrote:
certes, mais au départ on ne précise pas si l'on veut une répartition uniforme des valeurs ;-) c'était ce qui avait de plus rapide.
Nan. Si on ne précise pas du tout la répartition, le plus rapide est de prendre une valeur fixe quelconque. Par exemple :
int MonRand (int maximum) { return 0; }
Pour tester cette fonction, le test suivant me semble pas trop mal :
void f(int i) { assert (MonRand (i) <= i); }
Or, ce test f(-1);
Montre que ta proposition ne répond pas aux specs. ;p
-- Loïc
Fabien LE LEZ
On Tue, 08 Jun 2004 22:26:54 +0200, Loïc Joly wrote:
f(-1);
Montre que ta proposition ne répond pas aux specs. ;p
C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1. Donc la fonction ne peut rien renvoyer ; or son protoype lui impose de renvoyer un entier. Du coup, comportement indéfini, on peut s'attendre à tout. Bon, d'un autre côté, ça illustre le fait qu'il vaut mieux utiliser des "unsigned int"...
-- ;-) FLL, Epagneul Breton
On Tue, 08 Jun 2004 22:26:54 +0200, Loïc Joly
<loic.actarus.joly@wanadoo.fr> wrote:
f(-1);
Montre que ta proposition ne répond pas aux specs. ;p
C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1. Donc
la fonction ne peut rien renvoyer ; or son protoype lui impose de
renvoyer un entier. Du coup, comportement indéfini, on peut s'attendre
à tout.
Bon, d'un autre côté, ça illustre le fait qu'il vaut mieux utiliser
des "unsigned int"...
On Tue, 08 Jun 2004 22:26:54 +0200, Loïc Joly wrote:
f(-1);
Montre que ta proposition ne répond pas aux specs. ;p
C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1. Donc la fonction ne peut rien renvoyer ; or son protoype lui impose de renvoyer un entier. Du coup, comportement indéfini, on peut s'attendre à tout. Bon, d'un autre côté, ça illustre le fait qu'il vaut mieux utiliser des "unsigned int"...
-- ;-) FLL, Epagneul Breton
Gabriel Dos Reis
Fabien LE LEZ writes:
| On Tue, 08 Jun 2004 22:26:54 +0200, Loïc Joly | wrote: | | >f(-1); | > | >Montre que ta proposition ne répond pas aux specs. ;p | | C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1.
Il en existe deux : 0 et 1.
-- Gaby
Fabien LE LEZ <gramster@gramster.com> writes:
| On Tue, 08 Jun 2004 22:26:54 +0200, Loïc Joly
| <loic.actarus.joly@wanadoo.fr> wrote:
|
| >f(-1);
| >
| >Montre que ta proposition ne répond pas aux specs. ;p
|
| C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1.
| On Tue, 08 Jun 2004 22:26:54 +0200, Loïc Joly | wrote: | | >f(-1); | > | >Montre que ta proposition ne répond pas aux specs. ;p | | C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1.
Il en existe deux : 0 et 1.
-- Gaby
Alexandre
C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1.
euh si, il y en a deux : 0 et 1.
C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1.