J'ai essayé certaines solutions du forum mais n'a pas fonctionné pour moi, si la réponse est spécifique dans la langue de Kotlin, alors cela me sera plus utile pour moi. P>
4 Réponses :
Vous pouvez essayer ceci avec une fonction de récursion qui ne renvoie que le nombre aléatoire unique dans la plage de 0 à 6.
private var randomNumber: Int = 0 private var integerList: MutableList<Int>? = null private fun getRandomNumber(): Int { val rand = Random() randomNumber = rand.nextInt(7) if (integerList!!.contains(randomNumber)) { getRandomNumber() } else { integerList!!.add(randomNumber) } return randomNumber }
Quelle est la liste entière dans cet exemple? Pourquoi ne pas utiliser de carte pour des recherches plus efficaces?
Voir le code modifié, Integerlist est une liste mutable qui contiendra les numéros aléatoires générés.
As Andrew Thompson dis dire ici , vous pouvez
Une implémentation simple serait: p> ceci imprimerait 3 nombres aléatoires uniques de 1 à 10 p> p>
Cela pourrait devenir difficile à manifester si l'utilisateur nécessite des entiers de 1,5 million.
int[] Numbers; int num = 0; getRandomNum(); public void getRandomNum() { Random rand = new Random(10); if(Numbers.contains(rand)) { Log.i("console","Try Again"); } else { num = rand; Numbers.add(rand); } }
Les chiffres doivent être une liste.
Afin d'améliorer la qualité de votre réponse, veuillez ajouter un commentaire sur ce que ce code fait et comment il résout la question initiale.
Tout d'abord, je ne recommanderais pas une fonction pour cela, utilisez plutôt une classe qui encapsule la logique qui augmente la convivialité.
Vous pouvez utiliser La fonction list code> (oui, c'est vraiment une fonction ici) pour générer une liste de tous les numéros possibles, puis la mélanger et après cela sur celui-ci. P>
val numberProvider = UniqueRandomNumbers(0, 2)
// returns 0, 1, 2 or null if all numbers have been consumed
numberProvider.next
Oui, mais je ne les ai pas trouvés utiles.