Ero curioso di sapere come implementare la probabilità in Java? Ad esempio, se le probabilità che una variabile mostri è 1/25, come potrei implementarla? O qualche altra probabilità? Per favore, indicami la direzione generale.Probabilità in Java
risposta
Si dovrebbe usare Random per generare un numero casuale, quindi testarlo contro un valore letterale per abbinare la probabilità che si sta tentando di raggiungere.
Così dato:
boolean val = new Random().nextInt(25)==0;
val
avrà un 1/25 probabilità di essere vera (dal nextInt()
ha un ancora probabilità di restituire qualsiasi numero a partire da 0 e fino a, ma non incluso, 25.)
Ovviamente è necessario anche import java.util.Random;
.
Come sottolineato in basso, se stai ricevendo più di un numero a caso sarebbe più efficiente di riutilizzare l'oggetto a caso, piuttosto che ricreare tutto il tempo:
Random rand = new Random();
boolean val = rand.nextInt(25)==0;
..
boolean val2 = rand.nextInt(25)==0;
ottima logica! Grazie! –
+1: posizionare il 'nuovo Random()' in un campo o variabile e riutilizzarlo aiuterebbe l'efficienza. –
@PeterLawrey hai ragione, naturalmente, ho modificato la risposta in modo appropriato. L'ho messo in questo modo come un esempio di 1 linea! – berry120
Generalmente si utilizza un generatore di numeri casuali. La maggior parte di questi restituisce un numero nell'intervallo [0,1] in modo da verificare se tale numero è < = 0,04 oppure no.
if(new Random().nextDouble() <= 0.04) { //you might want to cache the Random instance
//we hit the 1/25 (4%) case.
}
O
if(Math.random() <= 0.04) {
//we hit the 1/25 (4%) case.
}
Nota che ci sono più generatori di numeri casuali che hanno diverse proprietà, ma per semplici applicazioni della classe Random
dovrebbero essere sufficienti.
Nel caso generale, questa soluzione che utilizza rand.nextDouble() è migliore della risposta accettata, poiché può essere applicata a qualsiasi probabilità arbitraria (anziché solo a 1/x per un intero dato x). Ad esempio, se la probabilità di destinazione è 33,5%, non esiste una soluzione semplice e pulita utilizzando rand.nextInt(). – shiri
@shiri che dipende da potenziali problemi di precisione. Usando numeri interi è possibile creare un numero intero compreso tra 0 e 1000 e verificare che il valore sia inferiore a 335. È stato concordato il – Thomas
, suppongo che si tratti di una questione di preferenza. Quando penso alle probabilità tendo a pensare in termini di numeri nell'intervallo [0,1], quindi trovo nextDouble() <= X per essere più pulito. – shiri
Java ha una classe denominata java.util.Random
che può generare numeri casuali. Se si desidera qualcosa accada con probabilità 1/25, semplicemente generare un numero casuale compreso tra 1 e 25 (o 0 e 24 compreso) e verificare se tale numero è pari a 1.
if(new java.util.Random().nextInt(25)==0){
//Do something.
}
Forse è possibile implementare questa con la generazione di numeri casuali.
Random rn = new Random();
double d = rn.nextDouble(); // random value in range 0.0 - 1.0
if(d<=0.04){
doSomeThing();
}
Poiché 1.7 è meglio usare (nell'ambiente concorrente almeno):
ThreadLocalRandom.current().nextInt(25) == 0
Un generatore di numeri casuali isolato al thread corrente. Come il generatore Random globale usato dalla classe Math, un ThreadLocalRandom viene inizializzato con un seed generato internamente che non può essere altrimenti modificato. Se applicabile, l'uso di oggetti ThreadLocalRandom piuttosto che di oggetti Random condivisi in programmi concorrenti di solito incontrerà molto meno sovraccarico e conflitto. L'uso di ThreadLocalRandom è particolarmente appropriato quando più attività (ad esempio, ogni ForkJoinTask) utilizzano numeri casuali in parallelo in pool di thread. Gli usi di questa classe dovrebbero in genere essere del tipo: ThreadLocalRandom.current(). NextX (...) (dove X è Int, Long, ecc.). Quando tutti gli usi sono di questo tipo, non è mai possibile condividere accidentalmente un ThreadLocalRandom su più thread.
Questa classe fornisce anche ulteriori metodi di generazione casuale limitati comunemente utilizzati.
- 1. probabilità in guida JavaScript?
- 2. Stima di una probabilità data altre probabilità da un precedente
- 3. Libreria grafica Java per disegnare diagrammi dell'albero delle probabilità
- 4. Probabilità di raggiungibilità ios6
- 5. Python - Probabilità di modellazione
- 6. OPencv SVM previsione probabilità
- 7. Notazione di probabilità
- 8. numeri casuali probabilità
- 9. Generazione di una distribuzione di probabilità
- 10. Moltiplicazione del tensore di probabilità utilizzando pandas.DataFrame
- 11. Routine di quadratura per densità di probabilità
- 12. Numeri casuali basati su una probabilità
- 13. Probabilità di classificazione WEKA delle classi
- 14. Teoria delle probabilità e pianificazione del progetto
- 15. cambiando probabilità di ottenere un numero casuale
- 16. Probabilità di vincere il calcolo percentuale PHP
- 17. Distribuzione probabilità per ritardi risposta sms
- 18. genera numeri interi casuali con probabilità
- 19. Generatore casuale di numeri casuali di probabilità
- 20. Costruisci un albero delle probabilità usando php?
- 21. Genera un booleano casuale con la probabilità data
- 22. Come effettuare una scelta in base a una probabilità percentuale
- 23. Estrarre le probabilità di sopravvivenza in Survfit per gruppi
- 24. Le probabilità in copula non si sommano al 1
- 25. Come scegliere un oggetto in base alla sua probabilità?
- 26. Generazione di numeri casuali con probabilità ponderate in python
- 27. Come posso calcolare la massima stima di probabilità in Python
- 28. Ottieni elementi casuali per array in base a diverse probabilità?
- 29. Probabilità di getter e setter sempre inline dal compilatore
- 30. Determinazione della funzione di massa di probabilità della variabile casuale
check out java Classe casuale. Questo ti permette di generare un numero casuale, e puoi andare da lì ... –