2010-05-19 55 views
2

我目前使用內置的隨機數發生器。如何在matlab中製作一個基於百分比的隨機數發生器?

例如

NASP =蘭迪([512,768],[1,1]);

512是下界,768是上界,隨機數發生器從這兩個值之間選擇一個數。

我想要的是有兩個範圍的nAsp,但我希望其中一個被叫25%的時間和其他75%的時間。然後插入他的等式。有沒有人有任何想法如何做到這一點,或者如果有matlab已內置函數已經?

例如

NASP =蘭迪([512,768],[1,1]);被稱爲25%的時間

nAsp = randi([690,720],[1,1]);被稱爲75%的時間

回答

6

我假設你的意思是隨機25%的時間?這裏有一個簡單的方法來做到這一點:

if (rand(1) >= 0.25) %# 75% chance of falling into this case 
    nAsp = randi([690 720], [1 1]); 
else 
    nAsp = randi([512 768], [1 1]); 
end 

如果你知道你產生這些N,你可以做

idx = rand(N,1); 
nAsp = randi([690 720], [N 1]); 
nAsp(idx < 0.25) = randi([512 768], [sum(idx < 0.25) 1]); %# replace ~25% of the numbers