how can i generate a random number out of a range??

7 visualizzazioni (ultimi 30 giorni)
i need to generate a random number out of a range, i did it inside with r=-1+(2).*rand(1,1) %my interval is (-1;1)
how can i do to get a random number that is not in this interval?? i mean, a number which satisfy r<-1 U 1<r

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 21 Gen 2014
Modificato: Azzi Abdelmalek il 21 Gen 2014
a=rand
out=1/a*sign(a-0.5)
%or for a vector
n=10;
a=rand(1,n);out=1./a.*sign(a-0.5)
  2 Commenti
Amit
Amit il 21 Gen 2014
Modificato: Amit il 21 Gen 2014
I think this technique would be biased. The negative random number would be always bigger while the positive ones will always be smaller.
Azzi Abdelmalek
Azzi Abdelmalek il 21 Gen 2014
You are right, if we use rand twice, it will be different
n=10;
out=1./rand(1,n).*sign(rand(1,n)-0.5)

Accedi per commentare.

Più risposte (1)

Amit
Amit il 21 Gen 2014
A = [1/rand -1/rand];
r = A(randi(2));
(or)
r = [1/rand -1/rand]*(randperm(2,2) -1)';
Either will generate a random number from r<-1 U 1<r

Categorie

Scopri di più su Random Number Generation in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by