Come possiamo generare un numero casuale molto grande in java? Sto parlando di qualcosa come 10000 cifre? So che dobbiamo usare BigInteger ma come possiamo farlo? Qual è il modo più efficace per fare qualcosa del genere? Si prega di fornire un piccolo esempio. Grazie.Generazione di numeri casuali molto grandi java
risposta
Beh, in un modo è quello di andare a Random.org e scaricare un uno dei file casuali binari. I file sono generati dal rumore atmosferico, quindi è molto casuale. L'ho usato per le chiavi di Zobrist nel mio motore di scacchi.
In alternativa si potrebbe andare
BigInteger b = new BigInteger(256, new Random());
che vi darà ciò che si desidera. In questo esempio, un BigInteger costituito da 256 bit.
Combina Random.nextBytes(byte[])
con BigInteger(byte[])
.
import java.util.*;
import java.math.*;
class Test{
public static void main(String[]_){
int n = 16;
Random r = new Random();
byte[] b = new byte[n];
r.nextBytes(b);
BigInteger i = new BigInteger(b);
System.out.println(i);
}
}
+1: Utilizzare possibilmente mod() per ottenere un numero specifico di cifre. –
puoi spiegare come funziona? Sono più o meno confuso sulla parte dei byte .. grazie –
Si assegna un array di byte, nextBytes lo riempie con valori casuali, e quindi il BigInteger viene inizializzato come il numero binario definito da quella sequenza di byte. Ma penso che la soluzione di Jaco sia più concisa. – Vlad
+1. C'erano quattro costruttori nella documentazione, non l'ho visto: D. – Vlad
Succede al meglio di noi! –