L'istruzione
a=sum(rand(rand(b,1)<c))
è errata, infatti, eseguita, da il seguente errore:
Error using rand
Size vector should be a row vector with real elements.
Analizzando l'istruzione:
[*]
rand(b,1): genera in vettore di "b" numeri random
[*]
rand(b,1)<c: verifica quali, degli
elementi del vettore di numeri random sia
minore di "
c". Questa istruzione ritorna un
vettore di "
b" elementi di tipo "
logical": "
1" se la condizione
è verificata (lo "
i-esimo" numero random è "minore di "c", "
0" se la condizione
non è verificata (lo "
i-esimo" numero random è "maggiore o uguale a "c")
[*]
rand(rand(b,1)<c):
questa istruzione è sbagliata e genera il messaggio di errore. Alla funzione rand "esterna", viene passato in input un vettore di elementi di tipo "logical" (calcolati nel passaggio precedente), mentre essa richiede in input valori di
tipo "
integer"
[*]
a=sum(rand(rand(b,1)<c)): l'istruzione "
sum" calcola la somma degli elementi del vettore / matrice in input. In questo caso, essendo l'input non valido (come descritto al punto precedente) essa non viene invocata.
Se si elimina la chiamata alla funzione "rand" più "esterna", l'istruzione diventa:
a=sum(rand(b,1)<c)
In questo caso, l'istruzione assume un significato: "conta" la quantità di numeri (random) minori della soglia "c".
Assumendo:
[*] b=3
[*] c=0.33
e scomponendo l'istruzione (per chiarezza e per "vedere" quali numeri random vengono generati)
num_rand=rand(b,1)
idx_num_rand_min_soglia=num_rand < c
a=sum(idx_num_rand_min_soglia)
si ottiene:
num_rand =
0.9961
0.0782
0.4427
idx_num_rand_min_soglia =
0
1
1
a =
2
Hope this helps.