ingallosbaraglio - l'informatica in soldoni

Generare un vettore di numeri casuali tutti diversi



Pubblicato il 02-07-2012

E' un pò che non scrivo sul blog, per cui fatemi subito correre ai ripari!

Il problema

Ultimamente mi sto flashando con il gioco per smartphone '100 Floors', così affrontando livello dopo livello mi sono imbattuto al piano 26 dove dobbiamo azzeccare la giusta combinazione di mattoncini da 1, 5, 20V affinchè la loro somma moltiplicata per 1, 2 e 3 faccia 100.

Ovviamente qua la prima cosa che viene da pensare, apparte il classico 'che palle!', è quella di provare a caso alcune combinazioni nel tentativo di abbozzare pian piano un ragionamento!
Perchè non adottare proprio la strategia 'alla cavolo di cane' lasciando fare tutto il lavoro al pc??

La soluzione

Ecco quindi, qui di seguito una classe che risolve il problema del 26° piano di '100 Floors', generando combinazioni casuali dei mattoncini fino a quando la somma non soddisfi la condizione 100;

pongo infine l'attenzione sul pezzetto di codice che si occupa di calcolare un vettore di n elementi casuali e tutti diversi, che può sempre servire ad un programmatore per svariati scopi!

String numeri = "Vettore: ";

for (int k = 0; k < num; k++)
{

indici[k] = (int) (Math.random()*num);
String mio = String.valueOf(indici[k]);

while (numeri.contains(mio))
{
indici[k] = (int) (Math.random()*num);
mio = String.valueOf(indici[k]);
}

numeri = numeri + " " + indici[k];
System.out.println(numeri);
}

La stringa 'numeri' viene istanziata per memorizzare tutti i numeri che vengono poi generati casualmente dalla riga

indici[k] = (int) (Math.random()*num);

Una volta generato il numero, viene convertito in una stringa e memorizzato in 'mio', dopodichè si controlla con un ciclo while che il nuovo numero non sia già presente nella lista memorizzata in 'numeri'.

Se il numero generato è già presente, si ricalcola fintanto che è verificata questa condizione, altrimenti si salva come nuovo e se ne rigenera un altro.

Condividi