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

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

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 21 Jan. 2014
Bearbeitet: Azzi Abdelmalek am 21 Jan. 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 Kommentare

Amit
Amit am 21 Jan. 2014
Bearbeitet: Amit am 21 Jan. 2014
I think this technique would be biased. The negative random number would be always bigger while the positive ones will always be smaller.
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)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Amit
Amit am 21 Jan. 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

Kategorien

Mehr zu Random Number Generation finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by