Maison  >  Article  >  Java  >  Pourquoi mes nombres aléatoires en Java semblent-ils être les mêmes à chaque fois ?

Pourquoi mes nombres aléatoires en Java semblent-ils être les mêmes à chaque fois ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-09 13:41:02907parcourir

Why Do My Random Numbers in Java Seem to Be the Same Every Time?

Comprendre les nombres aléatoires à l'aide de graines en Java

En Java, une graine est utilisée pour initialiser une instance aléatoire et générer une séquence de nombres pseudo-aléatoires . Lorsque la même graine est fournie, l'instance Random produit la même séquence de nombres.

Pourquoi mes nombres aléatoires sont-ils les mêmes à chaque fois ?

Dans le code fourni :

double num = generator.nextDouble() * (0.5);

Vous utilisez la même graine pour chaque appel à randomGenerator, ce qui donne la même séquence de randomGenerator nombres.

Comment y remédier

Pour générer différentes séquences de nombres aléatoires avec une graine :

  1. Utilisez différentes graines : Fournissez une graine différente comme argument au constructeur Random chaque fois que vous appelez randomGenerator. Cela créera plusieurs instances aléatoires, chacune avec une graine unique.
  2. Utiliser la graine par défaut : Si vous souhaitez utiliser la même graine pour plusieurs appels, initialisez une seule instance aléatoire en dehors de la randomGenerator avec le constructeur sans argument, qui utilise l'heure actuelle comme graine.

Exemple :

private Random generator = new Random(); // outside randomGenerator
double randomGenerator() {
    return generator.nextDouble() * (0.5); // inside randomGenerator
}

Génération de nombres pseudo-aléatoires

Les générateurs de nombres pseudo-aléatoires (PRNG) génèrent des séquences qui semblent aléatoires mais sont déterministes et dotés d’une valeur initiale. Lorsque la même graine est utilisée, le PRNG produit la même séquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn