C'est une question Java assez simple (bien que probablement applicable à toute la programmation):
Math.random()
renvoie un nombre entre zéro et un.
Si je veux retourner un entier entre zéro et cent, je ferais:
(int) Math.floor(Math.random() * 101)
Entre un et cent, je ferais:
(int) Math.ceil(Math.random() * 100)
Mais que faire si je voulais obtenir un nombre entre trois et cinq? Sera-ce comme la déclaration suivante:
(int) Math.random() * 5 + 3
Je sais pour nextInt()
dans java.lang.util.Random
. Mais je veux apprendre comment faire cela avec Math.random()
.
(int)Math.floor(Math.random()*3) + 3
Math.ceil
est erronée, elle donne un mauvais résultat lors duMath.random()
retour0
.Réponses:
Sortie de
randomWithRange(2, 5)
10 fois:Les bornes sont inclusives, c'est-à-dire [2,5], et
min
doivent être inférieures à cellesmax
de l'exemple ci-dessus.EDIT: Si quelqu'un voulait essayer d'être stupide et inverser
min
etmax
, vous pourriez changer le code en:EDIT2: Pour votre question sur
double
s, c'est juste:Et encore une fois, si vous voulez le rendre idiot, c'est juste:
la source
(int)
et que vous souhaitez qu'il renvoie undouble
?int
s pardouble
s (et le typage n'est pas nécessaire). J'ai supposé que vous vouliez desint
s mais je vais ajouter à mon message.double
s, supprimez le+ 1
également car ilMath.random()
n'est pas tronqué. Cependant, la plage sera [min, max) puisqueMath.random
"Renvoie une valeur double avec un signe positif, supérieure ou égale à 0,0 et inférieure à 1,0." Il y aurait une chance très minime que le nombre soit exactement demax
toute façon, même si c'était possible.Si vous souhaitez générer un nombre compris entre 0 et 100, votre code ressemblerait à ceci:
Pour générer un nombre de 10 à 20:
Dans le cas général:
(où
lowerbound
est inclusif etupperbound
exclusif).L'inclusion ou l'exclusion de
upperbound
dépend de votre choix. Disonsrange = (upperbound - lowerbound) + 1
alorsupperbound
est inclus, mais sirange = (upperbound - lowerbound)
alorsupperbound
est exclusive.Exemple: si je veux un entier compris entre 3 et 5, alors si la plage est (5-3) +1, alors 5 est inclusif, mais si la plage est juste (5-3), alors 5 est exclusif.
la source
upperbound
exclusif? Je pense que ce sera inclusif.La
Random
classe de Java située dans lejava.util
package servira mieux votre objectif. Il a quelquesnextInt()
méthodes qui retournent un entier. Celui qui prend un argument int va générer un nombre entre 0 et cet int, ce dernier n'étant pas inclusif.la source
Math.random()
. Merci.Pour générer un nombre compris entre 10 et 20 inclus, vous pouvez utiliser
java.util.Random
la source
Voici une méthode qui reçoit les limites et renvoie un entier aléatoire. Il est légèrement plus avancé (complètement universel): les limites peuvent être à la fois positives et négatives , et les limites minimum / maximum peuvent venir dans n'importe quel ordre.
En général, il trouve la distance absolue entre les bordures, obtient une valeur aléatoire pertinente, puis décale la réponse en fonction de la bordure inférieure.
la source