How do I generate random numbers in Dart?

RandomDart

Random Problem Overview


How do I generate random numbers using Dart?

Random Solutions


Solution 1 - Random

Use Random class from dart:math:

import 'dart:math';

main() {
  var rng = Random();
  for (var i = 0; i < 10; i++) {
    print(rng.nextInt(100));
  }
}

This code was tested with the Dart VM and dart2js, as of the time of this writing.

Solution 2 - Random

You can achieve it via Random class object random.nextInt(max), which is in dart:math library. The nextInt() method requires a max limit. The random number starts from 0 and the max limit itself is exclusive.

import 'dart:math';
Random random = new Random();
int randomNumber = random.nextInt(100); // from 0 upto 99 included

If you want to add the min limit, add the min limit to the result

int randomNumber = random.nextInt(90) + 10; // from 10 upto 99 included

Solution 3 - Random

Here's a snippet for generating a list of random numbers

import 'dart:math';

main() {
  var rng = new Random();
  var l = new List.generate(12, (_) => rng.nextInt(100));
}

This will generate a list of 12 integers from 0 to 99 (inclusive).

Solution 4 - Random

try this, you can control the min/max value :

NOTE that you need to import dart math library.

import 'dart:math';

void main() {
  
  int random(min, max) {
    return min + Random().nextInt(max - min);
  }

  print(random(5, 20)); // Output : 19, 5, 15..
}

Solution 5 - Random

A secure random API was just added to dart:math

new Random.secure()

> dart:math > Random added a secure constructor returning a cryptographically secure > random generator which reads from the entropy source provided by the > embedder for every generated random value.

which delegates to window.crypto.getRandomValues() in the browser and to the OS (like urandom on the server)

Solution 6 - Random

If you need cryptographically-secure random numbers (e.g. for encryption), and you're in a browser, you can use the DOM cryptography API:

int random() {
  final ary = new Int32Array(1);
  window.crypto.getRandomValues(ary);
  return ary[0];
}

This works in Dartium, Chrome, and Firefox, but likely not in other browsers as this is an experimental API.

Solution 7 - Random

its worked for me new Random().nextInt(100); // MAX = number

it will give 0 to 99 random number

Eample::

import 'dart:math';
int MAX = 100;
print(new Random().nextInt(MAX));`

Solution 8 - Random

Not able to comment because I just created this account, but I wanted to make sure to point out that @eggrobot78's solution works, but it is exclusive in dart so it doesn't include the last number. If you change the last line to "r = min + rnd.nextInt(max - min + 1);", then it should include the last number as well.

Explanation:

max = 5;
min = 3;
Random rnd = new Random();
r = min + rnd.nextInt(max - min);
//max - min is 2
//nextInt is exclusive so nextInt will return 0 through 1
//3 is added so the line will give a number between 3 and 4
//if you add the "+ 1" then it will return a number between 3 and 5

Solution 9 - Random

Let me solve this question with a practical example in the form of a simple dice rolling app that calls 1 of 6 dice face images randomly to the screen when tapped.

first declare a variable that generates random numbers (don't forget to import dart.math). Then declare a variable that parses the initial random number within constraints between 1 and 6 as an Integer.

Both variables are static private in order to be initialized once.This is is not a huge deal but would be good practice if you had to initialize a whole bunch of random numbers.

static var _random = new Random();
static var _diceface = _random.nextInt(6) +1 ;

Now create a Gesture detection widget with a ClipRRect as a child to return one of the six dice face images to the screen when tapped.

GestureDetector(
          onTap: () {
            setState(() {
              _diceface = _random.nextInt(6) +1 ;
            });
          },
          child: ClipRRect(
            clipBehavior: Clip.hardEdge,
            borderRadius: BorderRadius.circular(100.8),
              child: Image(
                image: AssetImage('images/diceface$_diceface.png'),
                fit: BoxFit.cover,
              ),
          )
        ),

A new random number is generated each time you tap the screen and that number is referenced to select which dice face image is chosen.

I hoped this example helped :)

Dice rolling app using random numbers in dart

Solution 10 - Random

you can generate by simply in this way there is a class named Random();

you can use that and genrate random numbers

Random objectname = Random();
int number = objectname.nextInt(100);
// it will generate random number within 100.

Solution 11 - Random

Just wrote this little class for generating Normal Random numbers... it was a decent starting point for the checking I need to do. (These sets will distribute on a "bell" shaped curve.) The seed will be set randomly, but if you want to be able to re-generate a set you can just pass some specific seed and the same set will generate.

Have fun...

class RandomNormal {
  num     _min, _max,  _sum;
  int     _nEle, _seed, _hLim;
  Random  _random;
  List    _rNAr;

  //getter
  List get randomNumberAr => _rNAr;

  num _randomN() {
    int r0 = _random.nextInt(_hLim);
    int r1 = _random.nextInt(_hLim);
    int r2 = _random.nextInt(_hLim);
    int r3 = _random.nextInt(_hLim);

    num rslt = _min + (r0 + r1 + r2 + r3) / 4000.0;  //Add the OS back in...
    _sum += rslt; //#DEBUG ONLY
    return( rslt );
  }

  RandomNormal(this._nEle, this._min, this._max, [this._seed = null]) {
    if (_seed == null ) {
      Random r = new Random();
      _seed    = r.nextInt(1000);
    }
    _hLim   = (_max - _min).ceil() * 1000;
    _random = new Random(_seed);
    _rNAr   = [];
    _sum    = 0;//#DEBUG ONLY

    h2("RandomNormal with k: ${_nEle}, Seed: ${_seed}, Min: ${_min}, Max: ${_max}");//#DEBUG ONLY
    for(int n = 0; n < _nEle; n++ ){
      num randomN = _randomN();
      //p("randomN  = ${randomN}");
      LIST_add( _rNAr, randomN );
    }

    h3("Mean = ${_sum/_nEle}");//#DEBUG ONLY
  }
}


new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);
new RandomNormal(1000, 80, 120);

Then you can just use it like this to check the mean of sets of 1000 nums generated between a low and high limit. The values are stored in the class so they can be accessed after instantiation.

_swarmii

Solution 12 - Random

An alternative solution could be using the following code DRandom. This class should be used with a seed. It provides a familiar interface to what you would expect in .NET, it was ported from mono's Random.cs. This code may not be cryptography safe and has not been statistically tested.

Solution 13 - Random

For me the easiest way is to do:

import 'dart:math';
Random rnd = new Random();
r = min + rnd.nextInt(max - min);
//where min and max should be specified.

Thanks to @adam-singer explanation in here.

Solution 14 - Random

Generate random numbers with the Random class. You can optionally provide a seed to the Random constructor.

var random = Random();
random.nextDouble(); // Between 0.0 and 1.0: [0, 1)
random.nextInt(10); // Between 0 and 9.

You can even generate random booleans:

var random = Random();
random.nextBool(); // true or false

Solution 15 - Random

use this library http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart provided a good random generator which i think will be included in the sdk soon hope it helps

Solution 16 - Random

Use Dart Generators, that is used to produce a sequence of number or values.

 main(){ 
       print("Sequence Number");
       oddnum(10).forEach(print);
     }
    Iterable<int> oddnum(int num) sync*{
     int k=num;
     while(k>=0){
       if(k%2==1){
        yield k;
       }
      k--;
     } 
}

Solution 17 - Random

Use class Random() from 'dart:math' library.

import 'dart:math';

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

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

Solution 18 - Random

one line solution you can directly call all the functions with constructor as well.

import 'dart:math';

print(Random().nextInt(100));

Solution 19 - Random

This method generates random integer. Both minimum and maximum are inclusive.

Make sure you add this line to your file: import 'dart:math'; Then you can add and use this method:

int randomInt(int min, int max) {
return Random().nextInt(max - min + 1) + min;
}

So if you call randomInt(-10,10) it will return a number between -10 and 10 (including -10 and 10).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSeth LaddView Question on Stackoverflow
Solution 1 - RandomSeth LaddView Answer on Stackoverflow
Solution 2 - RandomSamir RahimyView Answer on Stackoverflow
Solution 3 - RandomMark E. HaaseView Answer on Stackoverflow
Solution 4 - RandomAymen DnView Answer on Stackoverflow
Solution 5 - RandomGünter ZöchbauerView Answer on Stackoverflow
Solution 6 - RandomSam McCallView Answer on Stackoverflow
Solution 7 - RandomD V YogeshView Answer on Stackoverflow
Solution 8 - RandomChad McAdamsView Answer on Stackoverflow
Solution 9 - RandomNzuzoView Answer on Stackoverflow
Solution 10 - RandommishalhaneefView Answer on Stackoverflow
Solution 11 - Randomgeorge kollerView Answer on Stackoverflow
Solution 12 - Randomadam-singerView Answer on Stackoverflow
Solution 13 - Randompedro_bb7View Answer on Stackoverflow
Solution 14 - RandomParesh MangukiyaView Answer on Stackoverflow
Solution 15 - Randomkaiser avmView Answer on Stackoverflow
Solution 16 - RandomAqib MurtazaView Answer on Stackoverflow
Solution 17 - RandomRičards ZvagulisView Answer on Stackoverflow
Solution 18 - RandomKaushal ZodView Answer on Stackoverflow
Solution 19 - RandomAbdulrahman SarminiView Answer on Stackoverflow