0
votes

Remplir un tableau avec des nombres aléatoires de la plage [-N, N] en utilisant math.random

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 (): xxx

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


5 commentaires

Remplacer Taille + 1 juste avec la taille sinon, sinon vous déplacez les numéros aléatoires par 1 , 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 () peut être omis à compléter, la coulée à int 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 , tandis que (int) (- 1.5) == -1 .


@DodgyCodeeException Vous avez complètement raison, mon commentaire stipule même que: ... Je vais jeter tous les endroits décimaux ... , donc avec des nombres négatifs math.floor () doit être utilisé. Cependant, pourquoi proposer une telle logique si vous pouvez déjà utiliser le JDK pour ce threadlocalrandom # NEXTINT (INT, INT) :)


3 Réponses :


0
votes

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


0 commentaires

2
votes

Je changerais cette ligne: xxx

à: xxx

pour générer une valeur int aléatoire dans une plage spécifique, ici [ -Size, taille]


1 commentaires

HM Nous avons eu la même idée, mais vous étiez des secondes plus vite, j'ai un uppote alors;)



2
votes

Je suggère d'utiliser threadlocalrandom qui fournit une méthode pratique: Nextint (int Origin, Int Lié) . Qui peut ensuite être utilisé dans votre boucle comme ceci: xxx

Le premier argument origine définit l'endroit où les chiffres doivent démarrer et le deuxième argument lié ​​ limite les nombres générés à une valeur donnée exclusivement.


1 commentaires

Déjà évoqué votre réponse parce que vous avez ajouté une explication;)