244

Dartを使用して乱数を生成するにはどうすればよいですか?

4

19 に答える 19

300

Randomからのクラスを使用dart:math

import 'dart:math';

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

このコードは、この記事の執筆時点で、DartVMとdart2jsでテストされています。

于 2012-07-26T17:33:50.493 に答える
115

ライブラリにあるRandomクラスオブジェクトを介してそれを達成することができます。この方法には最大制限が必要です。乱数はから始まり、最大制限自体は排他的です。random.nextInt(max)dart:mathnextInt()0

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

最小制限を追加する場合は、結果に最小制限を追加します

int randomNumber = random.nextInt(90) + 10; // from 10 upto 99 included
于 2019-12-10T19:34:56.187 に答える
28

乱数のリストを生成するためのスニペットは次のとおりです

import 'dart:math';

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

これにより、0から99までの12個の整数のリストが生成されます。

于 2015-02-19T18:43:40.360 に答える
23

安全なランダムAPIが追加されましたdart:math

new Random.secure()

dart:math Randomsecure生成されたすべてのランダム値に対して、埋め込み機能によって提供されるエントロピーソースから読み取る暗号的に安全なランダムジェネレーターを返すコンストラクターを追加しました。

window.crypto.getRandomValues()ブラウザとOS(urandomサーバーなど)に委任します

于 2015-10-19T16:33:57.027 に答える
22

これを試してください、あなたは最小/最大値を制御することができます:

import 'dart:math';

void main(){
  int random(min, max){
    return min + Random().nextInt(max - min);
  }
  print(random(5,20)); // Output : 19, 5, 15..
}
于 2020-06-20T18:49:17.693 に答える
18

暗号化された安全な乱数(暗号化など)が必要で、ブラウザーを使用している場合は、DOM暗号化APIを使用できます

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

これはDartium、Chrome、Firefoxで機能しますが、これは実験的なAPIであるため、他のブラウザでは機能しない可能性があります。

于 2012-07-26T21:51:55.423 に答える
7

このアカウントを作成したばかりなのでコメントできませんが、@ eggrobot78のソリューションが機能することを確認したかったのですが、dart専用であるため、最後の番号は含まれていません。最後の行を「r=min + rnd.nextInt(max --min + 1);」に変更すると、最後の数値も含まれるはずです。

説明:

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
于 2020-03-31T18:22:15.157 に答える
7

それは私のために働いた new Random().nextInt(100); // MAX = number

0から99の乱数を与えます

例::

import 'dart:math';
int MAX = 100;
print(new Random().nextInt(MAX));`
于 2020-04-22T14:27:21.187 に答える
6

この質問を、タップすると6つのサイコロの顔画像の1つをランダムに画面に呼び出す単純なサイコロを振るアプリの形で実際の例を使って解決しましょう。

最初に、乱数を生成する変数を宣言します(dart.mathをインポートすることを忘れないでください)。次に、1〜6の制約内の初期乱数を整数として解析する変数を宣言します。

両方の変数は、一度初期化するために静的プライベートです。これは大したことではありませんが、大量の乱数を初期化する必要がある場合は良い習慣です。

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

次に、ClipRRectを子としてジェスチャ検出ウィジェットを作成し、タップすると6つのサイコロの顔画像の1つを画面に戻します。

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

画面をタップするたびに新しい乱数が生成され、その番号が参照されて、選択するサイコロの顔の画像が選択されます。

この例がお役に立てば幸いです:)

ダーツで乱数を使ったサイコロ転がしアプリ

于 2020-07-30T17:48:58.307 に答える
5

この方法で、Random()という名前のクラスを生成することができます。

それを使用して乱数を生成できます

Random objectname = Random();
int number = objectname.nextInt(100);
// it will generate random number within 100.
于 2021-12-18T03:30:37.007 に答える
4

ノーマル乱数を生成するためのこの小さなクラスを書いたばかりです...それは私が行う必要のあるチェックのためのまともな出発点でした。(これらのセットは「ベル」型の曲線上に分布します。)シードはランダムに設定されますが、セットを再生成できるようにする場合は、特定のシードを渡すだけで同じセットが生成されます。

楽しむ...

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

次に、このように使用して、下限と上限の間に生成された1000numのセットの平均を確認できます。値はクラスに保存されるため、インスタンス化後にアクセスできます。

_swarmii

于 2013-01-14T00:27:44.110 に答える
3

別の解決策は、次のコードDRandomを使用することです。このクラスはシードとともに使用する必要があります。これは、.NETで期待されるものへの使い慣れたインターフェイスを提供し、monoのRandom.csから移植されました。このコードは暗号化に対して安全ではない可能性があり、統計的にテストされていません。

于 2012-07-27T06:31:46.173 に答える
3

私にとって最も簡単な方法は次のことです。

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

ここで@adam-singerの説明に感謝します。

于 2019-12-20T06:43:59.553 に答える
2

Randomクラスで乱数を生成します。オプションで、Randomコンストラクターにシードを提供できます。

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

ランダムなブール値を生成することもできます。

var random = Random();
random.nextBool(); // true or false
于 2021-12-09T03:23:02.753 に答える
1

このライブラリを使用してくださいhttp://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dartは、sdkに含まれると思う優れたランダムジェネレーターを提供しました。

于 2012-08-03T21:26:57.557 に答える
1

一連の数値または値を生成するために使用されるダートジェネレーターを使用します。

 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--;
     } 
}
于 2020-11-24T14:21:06.977 に答える
1

'dart:math'ライブラリのクラスRandom()を使用します。

import 'dart:math';

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

これにより、0から9までの乱数が生成されて出力されます。

于 2021-11-26T19:11:58.893 に答える
1

このメソッドはランダムな整数を生成します。最小値と最大値の両方が含まれます。

この行をファイルに追加してください。import 'dart:math';次に、次のメソッドを追加して使用できます。

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

したがって、呼び出すrandomInt(-10,10)と、-10から10までの数値(-10から10を含む)が返されます。

于 2022-02-02T10:06:12.230 に答える
0

1行のソリューションでは、コンストラクターを使用してすべての関数を直接呼び出すこともできます。

import 'dart:math';

print(Random().nextInt(100));
于 2022-01-31T11:44:17.710 に答える