[MatLab] Generazione di un vettore random con dei vincoli

Sendo1
Salve a tutti,
avrei bisogno di un consiglio per risolvere il seguente problema con MATLAB:
Vorrei generare un vettore di lunghezza variabile ma pre-specificata che possa assumere solo 3 valori (ad esempio 1,2,3) con i seguenti vincoli probabilistici:
La probabilità che il numero generato all'iterazione i-esima sia 1 dove essere pari al 21%, la probabilità che sia un 2 deve essere pari al 59% ed infine la probabilità che sia un 3 deve essere pari al 20%.

Ogni consiglio o spunto è ben accetto, vi ringrazio in anticipo collaborazione e per il tempo che vorrete spendere per darmi una mano :-)

Risposte
apatriarca
Se n è la dimensione che ti interessa e A il vettore che vuoi creare, puoi fare qualcosa come il seguente (non l'ho testato):
R = rand(1, n)
A = zeros(1, n)
A(R <= 0.21) = 1
A(R > 0.21 && R <= 0.8) = 2
A(R > 0.8) = 3

In alternativa puoi usare un ciclo..

Sendo1
Grazie mille per il suggerimento, è stato molto utile :)

PadreBishop
@Apatriarca : la notazione compatta che tu hai usato è stupenda! Non sapevo che matlab la supportasse.

Mi sapresti dire il nome tecnico di tale "syntax sugar"?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.