min = intervallo - intervallo * percentuale max = intervallo + intervallo * percentualeAndiamo...
Ecco il codice, cui ho aggiunto due mie funzioni, una che converte il tempo espresso in ore, minuti e secondi in millisecondi, l'altra che dà una lettura sotto forma di stringa in ore, minuti e secondi di un tempo espresso in millisecondi.
long intervallo = intervalInMillis(1,0,0);
float percentuale=0.5f;
long variazione = (long)((float)intervallo * percentuale);
long min = intervallo - variazione;
long max = intervallo + variazione;
long random = (long)(Math.random() * (max - min + 1) + min);
System.out.println("minimo "+strTime(min));
System.out.println("massimo "+strTime(max));
System.out.println("valore casuale "+strTime(random));
}
public long intervalInMillis(long ore, long minuti, long secondi){
return ore*3600*1000+minuti*60*1000+secondi*1000;
}
public String strTime(long tempo) {
long minuti = tempo / 60000;
long ore = minuti / 60;
minuti = minuti % 60;
return "ore: " + ore + "; minuti: " + minuti;
}
Ed ecco il risultato (ho scelto una percentuale del 50% in meno o in più su un intervallo di un'ora:
08-10 21:33:05.953 6860-6860/com.antonello.labagosto18 I/System.out: minimo ore: 0; minuti: 30
08-10 21:33:05.954 6860-6860/com.antonello.labagosto18 I/System.out: massimo ore: 1; minuti: 30
valore casuale ore: 1; minuti: 29
08-10 21:34:09.683 6936-6936/com.antonello.labagosto18 I/System.out: minimo ore: 0; minuti: 30
massimo ore: 1; minuti: 30
valore casuale ore: 1; minuti: 13
08-10 21:34:57.812 6981-6981/com.antonello.labagosto18 I/System.out: minimo ore: 0; minuti: 30
massimo ore: 1; minuti: 30
valore casuale ore: 0; minuti: 39
08-10 21:35:52.024 7026-7026/? I/System.out: minimo ore: 0; minuti: 30
massimo ore: 1; minuti: 30
valore casuale ore: 1; minuti: 4
Nessun commento:
Posta un commento