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.
