-6
votes

Comment créer une fonction qui renvoie des nombres aléatoires uniques?

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.


1 commentaires

Oui, mais je ne les ai pas trouvés utiles.


4 Réponses :


6
votes

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
}


2 commentaires

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.



0
votes

As Andrew Thompson dis dire ici , vous pouvez

  • Ajoutez chaque numéro dans la plage séquentiellement dans une liste
  • shuffle it
  • Prenez les premiers numéros 'n' de la liste

    Une implémentation simple serait: xxx

    ceci imprimerait 3 nombres aléatoires uniques de 1 à 10


1 commentaires

Cela pourrait devenir difficile à manifester si l'utilisateur nécessite des entiers de 1,5 million.



0
votes
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); 
   }
}

2 commentaires

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.



0
votes

Tout d'abord, je ne recommanderais pas une fonction pour cela, utilisez plutôt une classe qui encapsule la logique qui augmente la convivialité.

1ère option forte> p>

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 


0 commentaires