Random

di il
4 risposte

Random

Ciao, premetto a tutti che il mio livello di conoscenza di java non è molto elevato, perchè ho ancora poca esperienza.
Allora il mio problema è creare data una enum, un metodo che mi estragga casualmente i suoi elementi.
Ed un'altra cosa che vorrei fare, è estrarre casualmente dei valori numerici, per esempio da 1 a 99 assegnando ad ogni possibile uscita io la probabilità del dato evento, ovvero non voglio che siano equiprobabili, ma vorrei settare io la probabilità. Ovviamente se questo non è possibile ho pensato che risolto il primo problema si potrebbe risolvere anche questo in quanto potrei creare una enum che contiene più volte un dato valore in modo che sia più probabile quella uscita. Però sarebbe un lavoro di certo più noioso e complicato quindi se sapete come risolvere anche questo problema ve ne sarei grato.

4 Risposte

  • Re: Random

    Class NumeroCasuale
    {
    public static void main(String[] args)
    {
    int x = (int)Math.random() * 99;
    System.out.println("Un numero a caso:" + x);
    }
    }

    con il codice di sopra prendi un numero a caso tra 0 e 100.


    ti crei la tua umnu ed l'elemnto da estrarre lo decidi in maniera random con il metodo di sopra.
    p.e. nel caso di un array di stringhe l'indice dell'elemento da considerare lo ottieni prorpio con il metodino di sopra.
    La classe Math di java ci viene in soccorso restiuendo un valore tra 0 e 1. Moltiplicando tale valore per 100 e castandolo ad intero avrai un valore compreso tra 0 e 100.

    sul popolare l'enum in base ad un criterio tuo probabilistico la vedo un po + difficile....se entri meglio nel dettaglio potrei consigliarti una eventuale soluzione da adottare...

    Saluti,
    Mario.
  • Re: Random

    Allora prendere un numero casuale tra 0 e 99 avevo trovato come si fa. Il mio problema era di prendere un valore di una enum a caso e tu mi hai detto di mettere tutti questi valori in un array ed usare math.random sull'indice dell'array in modo da prendermi un valore a caso, e quindi adesso dovrebbe andare.
    Ma il mio problema più grosso e settare io la probabilità di uscita dei numeri.
    Faccio un esempio, io ho l'insieme {1,2,3,4,5} e voglio che 1 e 5 escano con probabilità ciascuno del 10% 2 e 4 del 20% e di conseguenza 3 con la probabilità del 40%. E' possibile far questo?
    In teoria si potrebbe risolvere il problema creando l'insieme {1,2,2,3,3,3,3,4,4,5} e fare in modo che escano in modo equiprobabile, però in caso di molti più elementi e di percentuali del tipo 17% 52% e così via sarebbe troppo difficoltoso fare in questo modo, quindi è possibile scegliere i valori della probabilità per ogni singolo elemento dell'enum?
  • Re: Random

    Crea una classe elemento che contiene l'attributo da estrarre mediante l'algoritmo random e i seguenti attributi

    int pesoLeft
    int pesoRight

    Dove i valori di pesoLeft e pesoRight sono compresi tra 1 e 100 (puoi portare tutto il ragionamento anche tra 0 e 1)
    esempio

    Oggetto1 [pesoLeft = 0, pesoRight = 25] -> probabilità 25%
    Oggetto2 [pesoLeft = 26, pesoRight = 50] > probabilità 25%
    Oggetto3 [pesoLeft = 51, pesoRight = 100] > probabilità 50%

    Estrai un numero random tra 0 e 100 e scegli l'oggetto il cui valore random ricade nell'intervallo [pesoLeft, pesoRight]

    Questa è solo la prima idea che mi viene in mente.. sforzandosi un pò forse si riesce ad ottenere qualcosa di più elegante.
  • Re: Random

    Davvero mille grazie!!!
Devi accedere o registrarti per scrivere nel forum
4 risposte