J'ai une fonction dans laquelle je saisis la taille de la matrice multidimensionnelle n. Ensuite, je remplis ce tableau avec des nombres aléatoires dans la plage [-N, N], en utilisant math.random (): mais il affiche des valeurs incorrectes. Par exemple, lorsque j'entrerai n égal à 1 - affiche les chiffres 0, 1 et 2. qui est étrange. Puisque devrait produire -1, 0, 1 p> p>
3 Réponses :
Parce que la ronde de 1,5 est 2, donc en d'autres termes, supposant aléatoir () = 1 et taille = 1 alors vous avez 1 * (1 + 1)) - 1/2 (2-1) / 2
round(1.5)=2
Je changerais cette ligne: à: p> pour générer une valeur int aléatoire dans une plage spécifique, ici [ -Size, taille] p> p>
HM Nous avons eu la même idée, mais vous étiez des secondes plus vite, j'ai un uppote alors;)
Je suggère d'utiliser Le premier argument threadlocalrandom code> qui fournit une méthode pratique:
Nextint (int Origin, Int Lié) Code>
. Qui peut ensuite être utilisé dans votre boucle comme ceci: origine code> définit l'endroit où les chiffres doivent démarrer et le deuxième argument
lié code> limite les nombres générés à une valeur donnée exclusivement. p> p>
Déjà évoqué votre réponse parce que vous avez ajouté une explication;)
Remplacer
Taille + 1 code> juste avec la taille code> sinon, sinon vous déplacez les numéros aléatoires par
1 code>, c'est pourquoi vous obtenez la sortie actuelle
Parce que la ronde de 1,5 est 2, donc en d'autres termes, supposer aléatoire () = 1 et taille = 1, vous avez 1 * (1 + 1)) - 1/2 (2-1) / 2, utilisez plutôt. x) Méthode
@vmrvictor puis
math.floor () code> peut être omis à compléter, la coulée à
int code> rejetera déjà tous les décimales, qui agit la même chose qu'une opération de plancher
@Lino pas pour les nombres négatifs.
math.floor (-1.5) == -2 code>, tandis que
(int) (- 1.5) == -1 code>.
@DodgyCodeeException Vous avez complètement raison, mon commentaire stipule même que: ... Je vais jeter tous les endroits décimaux ... i>, donc avec des nombres négatifs
math.floor () code> doit être utilisé. Cependant, pourquoi proposer une telle logique si vous pouvez déjà utiliser le JDK pour ce
threadlocalrandom # NEXTINT (INT, INT) code> :)