Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

info array random !!!


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 7 risposta/e

#1
maiori08

maiori08

    Advanced Member

  • Utente
  • StellaStellaStella
  • 56 Messaggi:
salve, volevo sapere una cosa. In una traccia d'esame c'e scritto di fare un array random di 20 numeri compresi tra -2 e 15;
in un'altra prova c'e scritto di fare un'array di 20 elementi compresi tra 18 e 30
qualcuno di voi sa come si fa!!!



#2
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
Dai un' occhiata a questo thread.
Se ci sono ancora dubbi chiedi....

#3
maiori08

maiori08

    Advanced Member

  • Utente
  • StellaStellaStella
  • 56 Messaggi:
Questo l'ho fatto e mi esce, ma quando faccio il primo, il vettore di 20 numeri da -2 a 15 mi escono numeri oltre il 100. Mi puoi dare una mano!!

#4
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

Questo l'ho fatto e mi esce, ma quando faccio il primo, il vettore di 20 numeri da -2 a 15 mi escono numeri oltre il 100. Mi puoi dare una mano!!

Come è possibile che ti escano numeri oltre il 100?!
Cmq la soluzione è questa:
v = -2 + (15-(-2)).*rand(20,1)
Se poi i numeri li vuoi interi ci aggiungi ceil così:
v = ceil(-2 + (15-(-2)).*rand(20,1))


#5
maiori08

maiori08

    Advanced Member

  • Utente
  • StellaStellaStella
  • 56 Messaggi:
Io al posto del ceil uso la funzione raund, ma nn penso sia questo il problema perchè le altre mi escono

#6
Folgore

Folgore

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1805 Messaggi:

Io al posto del ceil uso la funzione raund, ma nn penso sia questo il problema perchè le altre mi escono


La formula corretta, che sicuramente hanno fatto vedere i prof agli esami è:
v1=round(-2+(15+2)*round(1,20))
.

L'uso di altre funzioni per creare interi è comunque accettabile.
Ciao.

#7
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

Io al posto del ceil uso la funzione raund, ma nn penso sia questo il problema perchè le altre mi escono

Allora, premesso che l' utilizzo di round o ceil in questo caso è del tutto arbitrario, la sintassi proposta da Folgore è scorretta (anche se credo si tratti di un errore di battitura....), in quanto si utilizza due volte la funzione round . Il primo round è corretto, ma il secondo è sbagliato perchè round arrotonda solo e non genera elementi, cosa che invece è specifica del rand.
Inoltre la sintassi del rand per generare vettori compresi in un intervallo di valori dati, prevede l' utilizzo dell' operatore utile per il prodotto di array (.*)e non per la moltiplicazione semplice (*).

P.S. Qualche chiarimento su round e ceil..... Dato un valore x:
floor(x): arrotonda x all' intero inferiore a x (arrotondamento per difetto);
ceil(x): arrotonda x all' intero superiore a x (arrotondamento per eccesso);
round(x): arrotonda x all' intero più vicino ad x (arrotondamento sia per eccesso che per difetto);
fix(x): restituisce semplicemente la parte intera di x (toglie i decimali e non arrotonda nulla).

#8
Folgore

Folgore

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1805 Messaggi:

Io al posto del ceil uso la funzione raund, ma nn penso sia questo il problema perchè le altre mi escono

Allora, premesso che l' utilizzo di round o ceil in questo caso è del tutto arbitrario, la sintassi proposta da Folgore è scorretta (anche se credo si tratti di un errore di battitura....), in quanto si utilizza due volte la funzione round . Il primo round è corretto, ma il secondo è sbagliato perchè round arrotonda solo e non genera elementi, cosa che invece è specifica del rand.
Inoltre la sintassi del rand per generare vettori compresi in un intervallo di valori dati, prevede l' utilizzo dell' operatore utile per il prodotto di array (.*)e non per la moltiplicazione semplice (*).

P.S. Qualche chiarimento su round e ceil..... Dato un valore x:
floor(x): arrotonda x all' intero inferiore a x (arrotondamento per difetto);
ceil(x): arrotonda x all' intero superiore a x (arrotondamento per eccesso);
round(x): arrotonda x all' intero più vicino ad x (arrotondamento sia per eccesso che per difetto);
fix(x): restituisce semplicemente la parte intera di x (toglie i decimali e non arrotonda nulla).


Chiedo venia, è stato un mio errore! Posso sbagliarmi anch'io. Effettivamente il primo round è corretto, ma poi volevo scrivere rand. Dato che le parole sono simili, talvolta mi succede di sbagliarmi.
Ciao.




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi