La génération d'une drôle de Nombre Aléatoire entre une Plage donnée
Comment générer une drôle de nombre Aléatoire entre une plage donnée..
Pour exemple: Pour la gamme allant de 1 à 6 ..
Aléatoire N'est 3 ou 1 ou 5
Méthode de Génération Aléatoire No :
Random_No = Min + (int)(Math.Random()*((Max-Min)+1))
Reportez-vous Comment puis-je générer des entiers aléatoires dans une gamme spécifique en Java?
Méthode Pour Générer Étrange Hasard N' :
Random_No = Min + (int)(Math.Random()*((Max-Min)+1))
if(Random_No%2 ==0)
{
if((Max%2)==0)&&Random_No==Max)
{
Random_No = Random_No - 1;
}
else{
Random_No = Random_No +1;
}
}
Cette Fonction sera toujours convertir 2 en 3 et non 1
Peut-on faire une plus fonction aléatoire qui peut convertir 2 parfois 3 et parfois en 1 ??
Une autre solution serait de générer un nombre de 0 à 2 (
(6-1)/2
) et double puis incrémenter le résultat. Il est facile de généraliser à toute une gamme de commencer avec n'importe quel nombre.OriginalL'auteur Sanket | 2012-09-26
Vous devez vous connecter pour publier un commentaire.
En supposant que max est inclus, je vous suggère le texte suivant:
Il en résulte une distribution uniforme parmi tous les nombres impairs.
Leffler: bon montage.
En fait, romedius est-ce que les trucs forts; j'ai juste nettoyé le modifier un peu, accidentellement, mais inévitablement l'obtention indue de crédit. Vous pouvez voir les détails de qui a fait quoi dans l'historique de la révision (cliquez sur le moment par le "édité" l'étiquette).
Ne savait pas que, merci 🙂
vous n'avez pas besoin de la première ligne où vous décrémenter Max.
OriginalL'auteur CrazyCasta
Si vous souhaitez inclure l'aléatoire dans la direction ainsi l'utilisation de nombres aléatoires pour la même chose.
OriginalL'auteur SiB
Au lieu de générer un nombre aléatoire entre 0 et 6, de générer un entre 0 et 5 et arrondi au plus proche nombre impair, de cette façon, vous aurez une distribution parfaite (33% pour chaque possibilité (1, 3, 5))
OriginalL'auteur Jonathon Ashworth
Pour ce faire, vous devez générer un deuxième nombre pseudo-aléatoire à ajouter ou de soustraire 1
OriginalL'auteur Morendo
Je me demande pourquoi les autres réponses, tous utilisent l'int fonte pour générer le nombre aléatoire. Pourquoi ne pas générer entier aléatoire directement, ce qui est plus précis que le nombre réel?
OriginalL'auteur chyx
Pour générer un nombre impair à partir d'un entier, vous pouvez utiliser
n * 2 + 1
Vraiment vous êtes la génération de nombres aléatoires et de l'application d'une transformation par la suiteÇa va marcher, même si la plage est [1,5] [2,5] [2,6] [1,6]
OriginalL'auteur Peter Lawrey
Mathématiquement les numéros ne seront pas acquérir quoi que ce soit par l'arrondi vers le haut ou vers le bas dans la dernière étape. Au lieu de cela, le premier et le dernier numéro ont 50% moins de chance d'obtenir ramassé plus de tous les autres numéros.
Bâton avec CrazyCasta ou J. Une solution.
OriginalL'auteur romedius
Façon sur la façon de vérifier le retour de Mathématiques.random() comme un nombre flottant. Si son int partie est un nombre pair, puis de les convertir vers le haut/le bas en fonction de sa partie flottante. Comme:
assumer les Mathématiques.random() x renvoyée.y; si x est pair, le retour (y>=0.5)?(x+1):(x-1)
Sera cet essai randomisé un peu?
OriginalL'auteur Michael Chen
Laisser le rouding ci-dessus ou ci-dessous dépendent de l'aléatoire epsilon.
OriginalL'auteur octoback
En Java 1.7 ou plus tard, je voudrais utiliser ThreadLocalRandom:
La raison d'utiliser des ThreadLocalRandom est expliqué ici. Notez aussi que la raison pour laquelle nous +1 à l'entrée de ThreadLocalRandom.nextInt() est de s'assurer que le max est inclus dans la gamme.
OriginalL'auteur rouble