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

 採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 1 月 21 日
編集済み: Azzi Abdelmalek 2014 年 1 月 21 日

0 投票

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 件のコメント

Amit
Amit 2014 年 1 月 21 日
編集済み: Amit 2014 年 1 月 21 日
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 2014 年 1 月 21 日
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)

サインインしてコメントする。

その他の回答 (1 件)

Amit
Amit 2014 年 1 月 21 日

0 投票

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

カテゴリ

ヘルプ センター および File ExchangeRandom Number Generation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by