|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Sep 2010
Messaggi: 28
|
[Java] funzione random
sto programmando in android e di conseguenza con il codice java.
Devo determinare una sequenza casuale di 16 numeri diversi tra loro e compresi tra 0 e 16. Ho realizzato questa funzione. count=0; while(count<16){ x = (int)(Math.random()*16); controllo=true; for (int k=0; k<16; k++) { if (x == random[k]) controllo=false; } if( controllo) { random[count]=x; count++;} }//fine ciclo while Il codice viene compilato correttamente, ma l'esecuzione si blocca, come se il ciclo while fosse infinito. Non riesco a capire cosa non vada, potete aiutarmi?? Ultima modifica di me88 : 04-05-2011 alle 22:38. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Il più grande pregio di Python.... è obbligatoria l'indentazione....
Detto ciò ti consiglio di seguire questa procedura 1) ti crei una List di Interi (meglio se un ArrayList così almeno ne guadagni in efficienza dato che ha l'accesso diretto ai dati) da 0 a 16 2) ti crei un nuovo oggetto Random.. es Random rn = new Random(); 3) fai un ciclo che ti svuota randomicamente l'ArrayList! Il valore random però non andrà a darti un valore da 0 a 16, ma bensì ti darà un valore da 0 alla dimensione dell'ArrayList, la quale ad ogni passata diminusce! In questo modo elimini dall'ArrayList un elemento sempre diverso fino a svuotarlo completamente |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
In tal caso passi la lista di interi creata a swap, swap te la "scombina" tutta, e poi la iteri.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
k < 16 ma k < count Devi considerare che nell'array il valore "zero" c'è già. Se lo fai ciclare su tutti i valori dell'array, poichè lo zero c'è già (in quanto valore di default dei componenti di un array di interi), passa i primi 14 check ma quando arriva al 15°, che non può che essere zero perchè gli altri 14 sono già stati estratti, il valore risulta essere già presente (è quello di random[15]) pur non essendo mai stato estratto (count è a 15 e vorrebbe diventare 16), da cui il ciclo infinito.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:23.




















