Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di softoxy
    Registrato dal
    Apr 2001
    Messaggi
    202

    [J2ME] Avere una vera funzione random

    Non so proprio come muovermi per avere una funzione che mi generi in maniera casuale un numero.
    Ho implementato una funzione che ho trovato sulla rete:
    public class MyRandom {
    int seed=0;

    public MyRandom() {
    this.seed=(int)(System.currentTimeMillis() % 65536);
    }
    private int next() {
    seed = (((seed+1)*75) % 65537)-1;
    return seed;
    }

    public int next(int n) {
    return (next() % n);
    }
    }

    Sembrerebbe buona se non fosse che l'intervallo di tempo che intercorre tra due valutazioni del numero non sia troppo piccolo.
    Cioč utilizzando questa funzione per avere un numero random tra un secondo, si ottiene lo stesso valore....
    Come posso ragionare per avere una funzione random in J2ME?

    Grazie!
    Soft!2001

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ma questa http://java.sun.com/javame/reference...il/Random.html no?
    la fatica č portare il numero generato a 32 bit nel range che vorresti tu

  3. #3
    Utente di HTML.it L'avatar di softoxy
    Registrato dal
    Apr 2001
    Messaggi
    202

    ..........

    Grazie per la risposta, ma

    Creates a new random number generator. Its seed is initialized to a value based on the current time:
    public Random() { this(System.currentTimeMillis()); }

    ha lo stesso problema. Inizializza sempre prendendo il tempo corrente in millesecondi.
    In sostanza mi servono dieci valori diversi, presi contemporanetamente, per far partire dieci palline, in posizioni diverse.
    Con queste funzioni ottengo sempre lo stesso valore.....
    Soft!2001

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ma i 10 random li crei con la stessa istanza di Random?

  5. #5
    Utente di HTML.it L'avatar di softoxy
    Registrato dal
    Apr 2001
    Messaggi
    202

    ......

    mh.. si, cosi:

    Random rand = new Random();

    for (int i = 0; i < 10; i++) {
    valore = rand.nextInt() * 100;
    }
    Soft!2001

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.