How do I generate random numbers in Dart?

前端 未结 14 1252
一个人的身影
一个人的身影 2021-01-31 06:49

How do I generate random numbers using Dart?

相关标签:
14条回答
  • 2021-01-31 07:20

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

    import 'dart:math';
    
    void main(){
      random(min, max){
        var rn = new Random();
        return min + rn.nextInt(max - min);
      }
      print(random(5,20)); // Output : 19, 6, 15..
    }
    
    0 讨论(0)
  • 2021-01-31 07:20

    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 = _rnd.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

    0 讨论(0)
  • 2021-01-31 07:22

    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).

    0 讨论(0)
  • 2021-01-31 07:26

    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

    0 讨论(0)
  • 2021-01-31 07:26

    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.

    0 讨论(0)
  • 2021-01-31 07:30

    Use Random class from dart:math:

    import 'dart:math';
    
    main() {
      var rng = new 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.

    0 讨论(0)
提交回复
热议问题