|
| |
|
magicorla |
[QUOTE][i]Originally posted by ViPah [/i]
... |
26-11-2008 12:12 |
|
|
magicorla |
.amico.
Registered: Oct 2005
Posts: 32 (0.00 al dì)
Location: Vimercate (MI)
Corso: Comunicazione Digitale
Anno: boh
Time Online: 11:42:32 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ViPah
emily per aiutarti fallo prima su carta, cioè pensa al ragionamento che fai nella tua testa e scrivilo.
math.random() restituisce un numero tra 0 e 1. Quindi moltiplicalo per 2008 e ti uscira un numero tra 0 e 2007.
metti questo in un do while o un for e fallo uscire dal ciclo solo quando l'anno riportato sarà tra 1920 e 2007.
Parti da questo!
ancora meglio:
classe random, crei un oggetto
next.int(88) ti restituisce un numero fra 0 e 87, ci sommi 1920 e il gioco è fatto
o con math.random moltiplichi per 87 (mi sembra) e sommi ancora 1920
Last edited by magicorla on 26-11-2008 at 12:14
|
26-11-2008 12:12 |
|
|
| |
|
pirata1 |
Grazie mille, ho provato a farli... All'inizio bis ... |
26-11-2008 16:22 |
|
|
pirata1 |
.amico.
Registered: Oct 2008
Posts: 27 (0.00 al dì)
Location: Milano
Corso: Comunicazione Digitale
Anno: primo
Time Online: 22:35:58 [...]
Status: Offline
Edit | Report | IP: Logged |
Grazie mille, ho provato a farli... All'inizio bisogna pensarci un po, ma nn son difficilissimi.
Un consiglio per il primo es. della data da estrarre:
int x = (int)((Math.random()*(2008-1920))+1920);
In questo modo, prendo il range da 1920 a 2007.
Grazie per aver messo il testo della prova
|
26-11-2008 16:22 |
|
|
| |
|
ViPah |
personalmente, mi sembra molto piu intuitivo molti ... |
26-11-2008 17:51 |
|
|
ViPah |
.arcimaestro.
Registered: Nov 2008
Posts: 404 (0.07 al dì)
Location: xD
Corso: =]
Anno:
Time Online: 1 Day, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
personalmente, mi sembra molto piu intuitivo moltiplicarlo per 2008 e fare un while...
|
26-11-2008 17:51 |
|
|
| |
|
Andrewz |
..peccato che con il while come dici tu è possibi ... |
26-11-2008 20:39 |
|
|
Andrewz |
.primate.
Registered: Sep 2008
Posts: 66 (0.01 al dì)
Location: Milano
Corso: ComDig
Anno: terzo
Time Online: 2 Days, 5:45:05: [...]
Status: Offline
Edit | Report | IP: Logged |
..peccato che con il while come dici tu è possibile (una probabilità remota) che non estragga mai una data nel range richiesto...inoltre il computer fatica in modo notevolmente maggiore in quanto deve attuare un ciclo fino a che non esce una data compresa nell'intervallo dovuto, cosa facilmente aggirabile con la linea di codice suggerita dagli altri.
Mi accodo ai sostenitori del (int)(Math.random()*88)+1920;
|
26-11-2008 20:39 |
|
|
| |
|
pirata1 |
[QUOTE][i]Originally posted by Andrewz [/i]
... |
26-11-2008 21:06 |
|
|
pirata1 |
.amico.
Registered: Oct 2008
Posts: 27 (0.00 al dì)
Location: Milano
Corso: Comunicazione Digitale
Anno: primo
Time Online: 22:35:58 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by Andrewz
..peccato che con il while come dici tu è possibile (una probabilità remota) che non estragga mai una data nel range richiesto...inoltre il computer fatica in modo notevolmente maggiore in quanto deve attuare un ciclo fino a che non esce una data compresa nell'intervallo dovuto, cosa facilmente aggirabile con la linea di codice suggerita dagli altri.
Mi accodo ai sostenitori del (int)(Math.random()*88)+1920;
Hmm bo, nn ho ben capito
Pero vabbe mi sembrano simili, cmq lo provero
|
26-11-2008 21:06 |
|
|
| |
|
ViPah |
perchè secondo te il pc fa fatica a moltiplicare ... |
26-11-2008 21:28 |
|
|
ViPah |
.arcimaestro.
Registered: Nov 2008
Posts: 404 (0.07 al dì)
Location: xD
Corso: =]
Anno:
Time Online: 1 Day, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
perchè secondo te il pc fa fatica a moltiplicare 2008 * 0<x<1? farà un milione di calcoli al secondo se ha un processore lento -.-''
|
26-11-2008 21:28 |
|
|
| |
|
Andrewz |
è diverso: se tu metti un ciclo while che ti calc ... |
26-11-2008 21:53 |
|
|
Andrewz |
.primate.
Registered: Sep 2008
Posts: 66 (0.01 al dì)
Location: Milano
Corso: ComDig
Anno: terzo
Time Online: 2 Days, 5:45:05: [...]
Status: Offline
Edit | Report | IP: Logged |
è diverso: se tu metti un ciclo while che ti calcola
int anno;
while (anno<1920){
anno=(Math.random()*2008);
}
il programma calcola n volte l'istruzione finchè non esce un numero compreso nell'intervallo che vuoi (in questo caso 1920-2007).Perciò il computer svolge l'istruzione n volte prima di trovare il numero che tu cerchi, contro la unica volta necessaria se si utilizza l'istruzione :
(Math.random()*88)+1920;.
Sono d'accordo che i computer di oggi sono molto veloci e di questo problema se ne possono fregare alla grande, però da un punto di vista di efficienza del codice è innegabile che eseguire una istruzione una volta è assolutamente più auspicabile che eseguirla almeno una volta.
Per concludere:le due soluzioni funzionano entrambe e a questi livelli di programmazione sono esattamente equivalenti, ma nel caso di un programma molto più complicato in cui il computer deve eseguire grandissime quantità di istruzioni non avrebbe tanto senso utilizzare la ripetizione di un gruppo di istruzioni per risolvere un problema per il quale ne occorrerebbe in realtà una sola !
Last edited by Andrewz on 26-11-2008 at 22:01
|
26-11-2008 21:53 |
|
|
| |
|
ViPah |
Son d'accordo con te, ma il problema si sarebbe po ... |
27-11-2008 09:55 |
|
|
ViPah |
.arcimaestro.
Registered: Nov 2008
Posts: 404 (0.07 al dì)
Location: xD
Corso: =]
Anno:
Time Online: 1 Day, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
Son d'accordo con te, ma il problema si sarebbe posto nel caso di calcoli abnormi, il primo milione di numeri primi o cose del genere...
|
27-11-2008 09:55 |
|
|
| |
|
Andrewz |
ok siamo d'accordo però siamo d'accordo anche che ... |
27-11-2008 10:01 |
|
|
Andrewz |
.primate.
Registered: Sep 2008
Posts: 66 (0.01 al dì)
Location: Milano
Corso: ComDig
Anno: terzo
Time Online: 2 Days, 5:45:05: [...]
Status: Offline
Edit | Report | IP: Logged |
ok siamo d'accordo però siamo d'accordo anche che più un codice è efficiente maggiore è la sua qualità
|
27-11-2008 10:01 |
|
|
| |
|
magicorla |
[QUOTE][i]Originally posted by ViPah [/i]
... |
27-11-2008 11:14 |
|
|
magicorla |
.amico.
Registered: Oct 2005
Posts: 32 (0.00 al dì)
Location: Vimercate (MI)
Corso: Comunicazione Digitale
Anno: boh
Time Online: 11:42:32 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ViPah
Son d'accordo con te, ma il problema si sarebbe posto nel caso di calcoli abnormi, il primo milione di numeri primi o cose del genere...
guarda, ci hanno fatto capire piu volte anche a lezione che la cosa da fare è trovare l'algoritmo piu efficente possibile... (esempio dell'algoritmo di euclide per l'MCD mi pare)..
il tuo metodo si può paragonare a fare pari e dispari con un dado a 20 facce aspettando che esca 1 per il dispari, e 2 per il pari..scartando gli altri risultati... non è meglio interpretare anche gli altri? (appunto pari e dispari)
in linea strettamente teorica fra l'altro l'algoritmo col while potrebbe anche non avere soluzione, o averla dopo qualche minuto....è vero che è statisticamente impossibile, ma non è da escludere... piu che altro perchè per analogia rischi di portarti un errore simile in programmi piu avanzati dove questo problema può saltare fuori
ti faccio un esempio, metti di voler applicare questo programma "lotteria" ad un asilo, quindi con bambini nati fra il 2002 e il 2004.
per il tuo ciclo WHILE ci sono solamente 3 soluzioni su 2004 possibilità. Non mi intendo di statistica, però se dovessimo estrare 10 bambini si rischia nell'ordine delle 8mila operazioni..o sbaglio?
Last edited by magicorla on 27-11-2008 at 11:19
|
27-11-2008 11:14 |
|
|
| |
|
ViPah |
Non può avere soluzione è una cagata, è un ipot ... |
27-11-2008 11:23 |
|
|
ViPah |
.arcimaestro.
Registered: Nov 2008
Posts: 404 (0.07 al dì)
Location: xD
Corso: =]
Anno:
Time Online: 1 Day, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
Non può avere soluzione è una cagata, è un ipotesi remotissima che non si verificherà quasi mai. Al test del programma, appena schiacciavo "invio" andava, anche con 100 date mi restituiva subito l'output. Sull'efficienza del programma ok, ma con un codice e un problema di questa entità, le due soluzioni sono equivalenti...Tantè che alla fine ho usato anche io la tecnica del 88 che rendeva il codice piu leggibile, visto che mi era rimasto un poco di tempo
|
27-11-2008 11:23 |
|
|
| |
|
Andrewz |
ahahah dai questa discussione sta durando da tanto ... |
27-11-2008 11:28 |
|
|
Andrewz |
.primate.
Registered: Sep 2008
Posts: 66 (0.01 al dì)
Location: Milano
Corso: ComDig
Anno: terzo
Time Online: 2 Days, 5:45:05: [...]
Status: Offline
Edit | Report | IP: Logged |
ahahah dai questa discussione sta durando da tanto e direi che va bene così, alla fine siamo un po tutti d'accordo vedo...
Piuttosto..chissà com'era il compitino di oggi!
|
27-11-2008 11:28 |
|
|
| |
|
ViPah |
hihihi, stasera sentiremo le bestemmie :D ... |
27-11-2008 11:29 |
|
|
ViPah |
.arcimaestro.
Registered: Nov 2008
Posts: 404 (0.07 al dì)
Location: xD
Corso: =]
Anno:
Time Online: 1 Day, 23:12:28 [...]
Status: Offline
Edit | Report | IP: Logged |
hihihi, stasera sentiremo le bestemmie
|
27-11-2008 11:29 |
|
|
| |
|
magicorla |
[QUOTE][i]Originally posted by ViPah [/i]
... |
27-11-2008 11:37 |
|
|
magicorla |
.amico.
Registered: Oct 2005
Posts: 32 (0.00 al dì)
Location: Vimercate (MI)
Corso: Comunicazione Digitale
Anno: boh
Time Online: 11:42:32 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by ViPah
Non può avere soluzione è una cagata, è un ipotesi remotissima che non si verificherà quasi mai. Al test del programma, appena schiacciavo "invio" andava, anche con 100 date mi restituiva subito l'output. Sull'efficienza del programma ok, ma con un codice e un problema di questa entità, le due soluzioni sono equivalenti...Tantè che alla fine ho usato anche io la tecnica del 88 che rendeva il codice piu leggibile, visto che mi era rimasto un poco di tempo
ti ho scritto anche io che è STASTICAMENTE impossibile...non c'è bisogno di scrivere che è una cagata...dato che era un esempio tecnico
comunque so anche io che il tuo metodo è efficente, ma si sta ragionando su un fatto di "logica" e penso che piu avanti ci servirà molto rendersi conto al volo che fra i 2 la cosa migliore da fare sia estrarre un numero con l'88... perchè magari il tuo metodo oltre che essere efficente è piu leggibile per noi novizi (se lo leggo lo capisco al volo, mentre l'altro ci metterei un po di piu),però logicamente non è la cosa migliore da fare...
comunque dato che siamo tutti daccordo penso che possiamo anche finirla qui,senza stare a discutere troppo su una cosa che abbiamo capito entrambi!
|
27-11-2008 11:37 |
|
|
| |
|
lik2006 |
qualcuno sa qualcosa del test di inglese?
... |
27-11-2008 16:19 |
|
|
lik2006 |
.illuminato.
Registered: Oct 2008
Posts: 175 (0.03 al dì)
Location:
Corso:
Anno:
Time Online: 1 Day, 10:25:53 [...]
Status: Offline
Edit | Report | IP: Logged |
qualcuno sa qualcosa del test di inglese?
http://www.ccdinf.unimi.it/it/avvisi/6113.html
|
27-11-2008 16:19 |
|
|
| |
|
All times are GMT. The time now is 10:08. |
|
|
|
|
|
|
|
| |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|