Home > Enterprise >  How to Generate Random number without repetition in Dart?
How to Generate Random number without repetition in Dart?

Time:01-07

I want to generate random numbers within the range of 1-100, without repetition in flutter. And when there are no more numbers to generate (i.e :- every number within 1-100 have been generated randomly without repeats) I want to set a boolean named "noNumbersLeft" to true. How do I do that?

CodePudding user response:

import 'dart:math';

void main() {
  int max = 101;
  int RandomNumber = Random().nextInt(max);
  print(RandomNumber);
}

This should generate and print a random number from 0 to 100.

OR

 import 'dart:math';
    
    void main()  {
int max = 101;
      var rng = new Random();
      for (var i = 0; i < 101; i  ) {
        print(rng.nextInt(max ));
      }
    }

No Need to set any flag(boolean named "noNumbersLeft")

CodePudding user response:

This while loop will create all the numbers from 1-100 without repetition.

final generatedRandoms = <int, bool>{};

var rng = Random();
while (generatedRandoms.length < 100) {
  final gr = rng.nextInt(100)   1;

  if (generatedRandoms[gr] ?? false) {
    continue;
  }

  generatedRandoms[gr] = true;
}

Now if you need the random number generation happens at different times, say when user taps on a button, the approach stays the same. You use a map or array where you keep track of generated numbers. If the number is generated already you call rng.nextInt until you get a number that hasn't been generated. Once your map reaches 100 length means you've used them all and then can set noNumbersLeft to true.

  •  Tags:  
  • Related