Nombre aleatoire

Bonjour,
je dois crer un vecteur en lui associant N nombres alatoires entre -1 et 1 .

Dim r as New Random
Dim L as double
 L = r.InRange(1,-1)

Comment associer N au nombre alatoire (1,-1) ?

N nombres alatoires ne va pas crer un vecteur, il me semble. Un vecteur est dfini par son origine, sa direction et par sa dimension, si je me souviens bien de mes maths - a remonte quelques dcennies…

Ceci dit, vous pourriez crer un tableau L(N) . Vous renseignez L(x) = r.InRange(1,-1) dans une boucle o x va de 0 N, par exemple. Ensuite, vous utilisez les lments du tableau comme vous le souhaitez.

Ma boucle :

For i=1 to N
   Randnum(i) = r.InRange(1,-1)
Next

cette boucle ne retourne que des 1, au lieu de doubles entre 1 et -1.

Bonjour,

Il me semble que le probleme c’est: “Returns a random number as an Integer in the range from minR to maxR, inclusive.”, c’est a dire, des numeros entiers.

Alors, pour obtenir des valeurs entre -1 et 1 vous debez faire une conversion:

For i=1 to N Randnum(i) = (r.InRange(0,2000)-1000)/1000 Next

De cette maniere, r retournera des valeurs entre 0 et 2000, et si on les reste 1000 on obtient des valeurs entre -1000 et 1000, qui sont divisees par 1000, pour obtenir des valeurs entre -1 et 1

Julen

Dim L as double L = (rnd*2)-1

c’est ok Julen ainsi que la solution de Michel.
Merci.

C’est deja la deuxieme fois que j’essaie de vous aider et je rate (en partie) la reponse. Desole.

Hereusement il y a des gens comme Michel qui sont tojours la pour aider :slight_smile:

Merci Michel.

[quote=168795:@Julen Ibarretxe Uriguen]C’est deja la deuxieme fois que j’essaie de vous aider et je rate (en partie) la reponse. Desole.

Hereusement il y a des gens comme Michel qui sont tojours la pour aider :)[/quote]

Mais ta réponse fonctionne parfaitement :slight_smile: Il est d’ailleur possible qu’elle produise plus de décimales que la mienne…

Julen, ta rponse est bonne, d’ailleurs c’est l’intention qui compte, mme si des fois on a pas la bonne rponse.

Test :
Voil les rsultats sur 10 nbres alatoires:

randnum(i)= (r.InRange(0,2000)-1000)/1000:

randnum : 0.766000000000000010 les valeurs sont a 3 dcimales !
randnum : 0.450000000000000010
randnum :-0.526000000000000020
randnum :-0.214000000000000000
randnum : 0.917000000000000040
randnum :-0.598999999999999980
randnum : 0.456000000000000020
randnum : 0.379000000000000000
randnum :-0.238999999999999990
randnum : 0.305000000000000010

randnum(i) = (rnd*2)-1:

randnum :-0.809467315673828130
randnum : 0.621784210205078130
randnum :-0.352252960205078130
randnum : 0.279445648193359380
randnum : 0.212024688720703130
randnum : 0.739662170410156250
randnum : 0.248580932617187500
randnum :-0.121873855590820310
randnum : 0.572147369384765630
randnum :-0.639757156372070310

Oui, mais tu peux changer la precision des valeurs si tu en as besoin:

randnum(i)= (r.InRange(0,2000)-1000)/1000 'trois decimales randnum(i)= (r.InRange(0,20000)-10000)/10000 'quattre decimales randnum(i)= (r.InRange(0,200000)-100000)/100000 'cinq decimales ...

En tout cas, je trouve la solution de Michel plus simple.

Jullen

Tout a fait Julen, et encore merci.