# Generate random number between -Inf and 0.5

조회 수: 5(최근 30일)
Raj Arora 2021년 9월 8일
댓글: Raj Arora 2021년 9월 8일
Z = [-Inf 0.5326 0.6 0.6674 Inf]
I have above intervals like (-Inf 0.5326) (0.5326 0.6) (0.6 0.6674) (0.6674 Inf). Between these intervals, I need to produce random numbers. How do you make the first and last samples? I'm trying to use the formula below, but it's not working. Is there a method to do this, and if so, what is wrong with my formula and how can I fix it? Can anyone please help me with this. Thanks in advance
if i =1
sample(i) = randi([-10^5, za(i+1)],1)
else if i = n
sample(i) = randi([za(i-1), 10^5],1)
##### 댓글 수: 1표시숨기기 없음
Raj Arora 2021년 9월 8일
thanks bjorn I got the point

댓글을 달려면 로그인하십시오.

### 채택된 답변

Bjorn Gustavsson 2021년 9월 8일
Since the cummulative-distribution-function of the random-number-distribution has to be one at +infinity, you need to have some probability-density-function that decreases as your Z becomes very small or very large. Therefore you need to add more information to your solution. From the information given above you could simply use something like:
n_samples = 123;
Z = [-Inf 0.5326 0.6 0.6674 Inf];
z = rand(n_samples,1);
for iGroup = numel(Z):-1:2;
z_groups{iGroup-1} = z(Z(iGroup-1)<z&z<=Z(iGroup));
end
That satisfies your request, in sense that you will get samples in each intervall specified, you havent specified how large fraction of the random numbers are expected to fall in either intervall, nor their probabillity distribution.
HTH

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

Walter Roberson 2021년 9월 8일
Random numbers with what distribution?
You are looking for infinite tails, but in double precision, representable values get less dense as the magnitude gets larger. The distance between adjacent numbers at 10^20 is 2^14; the distance between adjacent numbers at 10^40 is 2^80. So it is not possible to be able to distinguish between 10^20+0.6 and 10^20+0.6674 (for example) -- not if you use double precision numbers.
So if you want uniform random distribution you are going to have problems, unless you switch to a different representation.
How many different values need to be represented in the range (0.5326 0.6) ? 674 different values, as in 0.5326, 0.5327, 0.5328, ... 0.5998, 0.5999, .6000 ? How many different values betwee -inf and 0.5326 need to be represented ? If you wanted 2^53 different values to be represented between -realmax and 0.5326 and you want uniform random distribution, then the numbers would have to be roughly 10^291 apart. If you went for 2^64 different representable values, they would have to be about 2.4*10^288 apart
##### 댓글 수: 1표시숨기기 없음
Raj Arora 2021년 9월 8일
thanks walter.

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

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

Start Hunting!