2012-07-26 19 views
29

मैं डार्ट का उपयोग करके यादृच्छिक संख्या कैसे उत्पन्न करूं? dart:math सेमैं डार्ट में यादृच्छिक संख्या कैसे उत्पन्न करूं?

+4

कैसे आप जानते हैं कि वे बुरा संख्या रहे हैं? यादृच्छिक बात यह है कि आप वास्तव में कभी नहीं बता सकते ... http://i46.tinypic.com/2vw7237।gif – corsiKa

+1

मेरा विश्वास करो, आपको पता चलेगा कि यदि आप डार्ट का उपयोग करते हैं तो वे खराब हैं: कोर मैथ। :) यहां बग है: http://code.google.com/p/dart/issues/detail?id=499 –

+3

यदि आप जानना चाहते हैं कि आपकी यादृच्छिक संख्या खराब है या नहीं, तो मेरी ChiSquare लाइब्रेरी का उपयोग यह पता लगाने के लिए करें: https: //github.com/kaisellgren/ChiSquare –

उत्तर

36

उपयोग Random वर्ग:

import 'dart:math'; 

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

इस कोड को इस लेखन के समय के रूप में, डार्ट वीएम और dart2js साथ परीक्षण किया गया था।

+0

हे @ सेठ लड ... मैंने कुछ मिनट पहले http://www.dartlang.org/downloads.html से डार्ट डाउनलोड किया और # आयात ('डार्ट: गणित'); एक संदेश देता है "संदर्भित स्रोत नहीं मिल रहा है" ... क्या मुझे कुछ – Aaron

+1

याद आ रहा है यदि आप क्रिप्टोग्राफ़िक रूप से मजबूत यादृच्छिक संख्या चाहते हैं तो आप 'फ़ाइल' कक्षा के साथ 'dev/urandom' पढ़ने से बेहतर हैं। – Tower

+0

ऋणात्मक यादृच्छिक संख्या (युगल) के बारे में कैसे? मैं एक यादृच्छिक रेंज विधि को लागू करने की कोशिश कर रहा हूं जो उदाहरण के लिए -0.8 से 0.9 तक उत्पन्न होगा ... परिणाम उदाहरण के लिए होगा -0.32 –

12

आप क्रिप्टोग्राफी द्वारा सुरक्षित यादृच्छिक संख्या की जरूरत है (एन्क्रिप्शन के लिए उदाहरण के लिए), और आप एक ब्राउज़र में हो, तो आप DOM cryptography API उपयोग कर सकते हैं:

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

यह Dartium, क्रोम, और Firefox में काम करता है , लेकिन संभवतः अन्य ब्राउज़रों में नहीं है क्योंकि यह एक प्रयोगात्मक एपीआई है।

3

एक वैकल्पिक समाधान निम्नलिखित कोड DRandom का उपयोग कर सकता है। इस वर्ग का प्रयोग बीज के साथ किया जाना चाहिए। यह .NET में आप जो अपेक्षा करेंगे, उसके लिए एक परिचित इंटरफ़ेस प्रदान करता है, इसे मोनो के Random.cs से पोर्ट किया गया था। यह कोड क्रिप्टोग्राफ़ी सुरक्षित नहीं हो सकता है और सांख्यिकीय रूप से परीक्षण नहीं किया गया है।

+0

मैंने पहले ड्रैमैंड का उपयोग किया है। अच्छा मुक्ति! –

1

उपयोग इस पुस्तकालय http://dart.googlecode.com/svn/branches/bleeding_edge/dart/lib/math/random.dart एक अच्छा यादृच्छिक जनरेटर जो मुझे लगता है कि एसडीके में शामिल किया जाएगा प्रदान की जल्द ही आशा है कि यह मदद करता है

+0

यह अब एसडीके में है। इसका उपयोग कैसे करें इसके ऊपर मेरा उत्तर देखें। –

0

बस सामान्य यादृच्छिक संख्या पैदा करने के लिए इस छोटे से वर्ग में लिखा था ... यह एक सभ्य प्रारंभिक था मुझे जांच करने की आवश्यकता के लिए इंगित करें। (ये सेट एक "घंटी" आकार वक्र पर वितरित करेंगे।) बीज बेतरतीब ढंग से सेट किया जाएगा, लेकिन यदि आप एक सेट को फिर से उत्पन्न करने में सक्षम होना चाहते हैं तो आप केवल कुछ विशिष्ट बीज पास कर सकते हैं और एक ही सेट उत्पन्न होगा।

मज़े ...

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 निम्न और उच्च सीमा के बीच उत्पन्न nums के सेट में से मतलब जाँच करने के लिए कर सकते हैं। मान कक्षा में संग्रहीत होते हैं ताकि उन्हें तत्कालता के बाद एक्सेस किया जा सके।

_swarmii

3

यहाँ यादृच्छिक संख्या

import 'dart:math'; 

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

इस की सूची तैयार 0 से 99 (सम्मिलित) के लिए 12 पूर्णांकों की एक सूची उत्पन्न होगा के लिए एक टुकड़ा है।

3

एक सुरक्षित यादृच्छिक एपीआई सिर्फ dart:math

new Random.secure() 
को जोड़ा गया है

dart:math Random एक क्रिप्टोग्राफी द्वारा सुरक्षित यादृच्छिक जनरेटर है जो हर उत्पन्न के लिए embedder द्वारा प्रदान की एन्ट्रापी स्रोत से पढ़ता लौटने एक secure निर्माता जोड़ा यादृच्छिक मूल्य

जो ब्राउज़र में और ओएस (सर्वर पर urandom की तरह) के लिए window.crypto.getRandomValues() प्रतिनिधियों

+0

यह नया एपीआई 1.14-देव या उससे अधिक में उपलब्ध है। –

संबंधित मुद्दे

 संबंधित मुद्दे