سؤال

كيف أقوم بإنشاء أرقام عشوائية باستخدام Dart؟

هل كانت مفيدة؟

المحلول

يستخدم Random فئة من dart:math:

import 'dart:math';

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

تم اختبار هذا الكود باستخدام Dart VM وdart2js، حتى وقت كتابة هذه السطور.

نصائح أخرى

إذا كنت بحاجة إلى آمنة شفطافيا أرقام عشوائية (على سبيل المثال للتشفير)، وأنت في متصفح، يمكنك استخدام Cryptography API : giveacodicetagpre.

يعمل هذا في لعبة Dartium و Chrome و Firefox، ولكن ليس في متصفحات أخرى لأن هذا هو API تجريبي.

إليك مقتطف لتوليد قائمة بأرقام عشوائية giveacodicetagpre.

سيؤدي ذلك إلى توليد قائمة من 12 سنة من 0 إلى 99 (شاملة).

تمت إضافة واجهة برمجة تطبيقات عشوائية آمنة للتو dart:math

new Random.secure()

dart:math Random أضاف أ secure المُنشئ الذي يعود إلى مولد عشوائي آمن من الناحية التشفية يقرأ من مصدر الانتروبيا الذي يوفره التضمين لكل قيمة عشوائية تم إنشاؤها.

الذي يفوض إليه window.crypto.getRandomValues() في المتصفح ونظام التشغيل (مثل urandom على الخادم)

قد يستخدم الحل البديل التعليمات البرمجية التالية drandom .يجب استخدام هذه الفئة مع البذور.يوفر واجهة مألوفة لما تتوقعه في .NET، تم نقله من Mono's Random.cs.قد لا يكون هذا الرمز آمن للتشفير ولم يتم اختباره إحصائيا.

لقد كتبت للتو هذه الفئة الصغيرة للتوليد طبيعي أرقام عشوائية...لقد كانت نقطة بداية جيدة للتحقق الذي يجب علي القيام به.(ستوزع هذه المجموعات على منحنى شكل "جرس".) سيتم ضبط البذرة بشكل عشوائي ، ولكن إذا كنت تريد أن تكون قادرًا على إعادة توحيد مجموعة يمكنك فقط تمرير بعض البذور المحددة وستولد المجموعة نفسها.

استمتع...

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

ثم يمكنك استخدامه بهذه الطريقة للتحقق من متوسط ​​المجموعات المكونة من 1000 رقم التي تم إنشاؤها بين الحد الأدنى والأعلى.يتم تخزين القيم في الفصل حتى يمكن الوصول إليها بعد إنشاء مثيل لها.

_swarmii

استخدم هذه المكتبة http://dart.googlecode.com / svn / branches / bleeding_edge / dart / lib / math / random.dart قدم مولد عشوائي جيد الذي أعتقد أنه سيتم تضمينه في SDK قريبا آمل أن يساعد

يمكنك تحقيق ذلك عن طريق Random كائن الطبقة random.nextInt(max), ، وهو في dart:math مكتبة.ال nextInt() تتطلب الطريقة حدًا أقصى.الرقم العشوائي يبدأ من 0 والحد الأقصى بحد ذاته حصري.

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

إذا كنت تريد إضافة الحد الأدنى، أضف الحد الأدنى إلى النتيجة

int randomNumber = random.nextInt(100) + 10; // from 10 upto 99 included
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top