2010-05-19 4 views
2

J'utilise actuellement le générateur de nombres aléatoires intégré.Comment créer un générateur de nombres aléatoires dans matlab basé sur des pourcentages?

par exemple

NASP = Randi ([512, 768], [1,1]);

512 est la limite inférieure et 768 est la limite supérieure, le générateur de nombres aléatoires choisit un nombre entre ces deux valeurs. Ce que je veux, c'est avoir deux plages pour nAsp mais je veux que l'une d'entre elles soit appelée 25% du temps et l'autre 75% du temps. Puis est branché dans l'équation. Est-ce que quelqu'un a des idées sur la façon de le faire ou s'il y a déjà une fonction intégrée dans matlab?

par exemple

NASP = Randi ([512, 768], [1,1]); est appelé 25% du temps

nAsp = randi ([690, 720], [1,1]); est appelé 75% du temps

Répondre

6

Je suppose que vous voulez dire au hasard 25% du temps? Voici une façon facile de le faire:

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 

Si vous savez que vous générez N de ceux-ci, vous pouvez faire

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 
Questions connexes