OVH Cloud OVH Cloud

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
Avatar
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

5 réponses

1 2
Avatar
Loïc Joly
Fabien LE LEZ wrote:
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


Avatar
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

Avatar
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
Avatar
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.

Avatar
Fabien LE LEZ
On Wed, 9 Jun 2004 16:51:42 +0200, "Alexandre"
wrote:

C'est logique : il n'existe pas d'entier à la fois >= 0 et <= 1.


euh si, il y en a deux : 0 et 1.


Désolé, je voulais écrire "Il n'existe pas d'entier à la fois >=0 et
<= -1 (-1 étant le maximum indiqué à la fonction)".
--
;-)
FLL, Epagneul Breton


1 2