खोज…


0 और 1 के बीच यादृच्छिक संख्या

Math.random();

0 (समावेशी) और 1 (अनन्य) के बीच समान रूप से वितरित यादृच्छिक संख्या पैदा करता है

उदाहरण आउटपुट:

  • .22282187035307288
  • 0.3948539895936847
  • 0.9987191134132445

न्यूनतम और अधिकतम मूल्यों के बीच यादृच्छिक संख्या

function randomMinMax(min:Number, max:Number):Number {
    return (min + (Math.random() * Math.abs(max - min)));
}

यह फ़ंक्शन न्यूनतम और अधिकतम मानों की एक सीमा को पार करके कहा जाता है।

उदाहरण:

randomMinMax(1, 10);

उदाहरण आउटपुट:

  • 1.661770915146917
  • 2.5521070677787066
  • 9.436270965728909

यादृच्छिक कोण, डिग्री में

function randomAngle():Number {
    return (Math.random() * 360);
}

उदाहरण आउटपुट:

  • 31.554428357630968
  • 230.4078639484942
  • 312.7964010089636

किसी सरणी से यादृच्छिक मान

मान लें कि हमारे पास एक सरणी है myArray :

var value:* = myArray[int(Math.random() * myArray.length)];

ध्यान दें कि हम int लिए Math.random() का परिणाम डालने के लिए int का उपयोग करते हैं क्योंकि 2.4539543 जैसे मान एक मान्य 2.4539543 इंडेक्स नहीं होंगे।

एक सर्कल के अंदर यादृच्छिक बिंदु

पहले वृत्त की त्रिज्या और उसके केंद्र को परिभाषित करें:

var radius:Number = 100;
var center:Point = new Point(35, 70);

फिर केंद्र से रेडियन में एक यादृच्छिक कोण उत्पन्न करें:

var angle:Number = Math.random() * Math.PI * 2;

फिर लौटे बिंदु का एक प्रभावी त्रिज्या उत्पन्न करते हैं, इसलिए यह दिए गए radius अंदर होगा। एक साधारण Math.random()*radius नहीं करेगा, क्योंकि इस वितरण के साथ उत्पादन अंक आधे त्रिज्या के आंतरिक चक्र में आधे समय तक खत्म हो जाएगा, लेकिन उस सर्कल का वर्ग मूल का एक चौथाई है। एक उचित वितरण बनाने के लिए, फ़ंक्शन इस तरह होना चाहिए:

var rad:Number=(Math.random()+Math.random())*radius; // yes, two separate calls to random
if (rad>radius) { rad=2*radius-rad; }

यह फ़ंक्शन एक मान उत्पन्न करता है जिसकी संभाव्यता फ़ंक्शन 0 से शून्य से अधिकतम radius रैखिक रूप से बढ़ती है। यह इसलिए होता है क्योंकि यादृच्छिक मान की राशि एक है प्रायिकता घनत्व समारोह के बराबर घुमाव के सभी यादृच्छिक मूल्यों के व्यक्तिगत घनत्व कार्यों की। यह औसत दर्जे के व्यक्ति के लिए कुछ विस्तारित गणित है, लेकिन " बॉक्स सिग्नल " के रूप में बताए गए दो समान वितरण घनत्व कार्यों के दृढ़ संकल्प फ़ंक्शन का ग्राफ खींचने के लिए एक तरह का जीआईएफ प्रस्तुत किया जाता है। if ऑपरेटर परिणामी फ़ंक्शन को अपने अधिकतम पर मोड़ देता है, तो केवल एक आरा-आकार के ग्राफ को छोड़कर।

इस समारोह का चयन किया जाता है, क्योंकि एक चक्र के बीच स्थित पट्टी के वर्ग radius=r और radius=r+dr सीध में बढ़ते के साथ बढ़ जाती है r और बहुत छोटे निरंतर dr ताकि dr*dr<<r । इसलिए, केंद्र में उत्पन्न होने वाले बिंदुओं की मात्रा सर्कल के किनारे पर उत्पन्न अंकों की मात्रा से उसी मार्जिन से कम होती है, क्योंकि केंद्र क्षेत्र की त्रिज्या पूरे सर्कल के त्रिज्या से छोटी होती है। तो कुल मिलाकर, अंक पूरे सर्कल में समान रूप से वितरित किए जाते हैं।

अब, अपनी यादृच्छिक स्थिति प्राप्त करें:

var result:Point = new Point(
    center.x + Math.cos(angle) * rad,
    center.y + Math.sin(angle) * rad
);

वृत्त पर एक यादृच्छिक बिंदु (किसी दिए गए त्रिज्या के घेरे के किनारे पर) प्राप्त करने के लिए, का उपयोग करें radius के बजाय rad

पुनश्च: उदाहरण गणित के स्पष्टीकरण द्वारा अतिभारित किया गया।

यादृच्छिक कोण, रेडियन में

function randomAngleRadians():Number
{
    return Math.random() * Math.PI * 2;
}

उदाहरण आउटपुट:

  • 5.490068569213088
  • 3.1984284719180205
  • 4.581117863808207

एक "प्रतिशत मौका" ऑपरेशन की सफलता का निर्धारण

यदि आपको "x% chance" स्थिति में true या false लिए रोल करना है, तो उपयोग करें:

function roll(chance:Number):Boolean {
    return Math.random() >= chance;
}

जैसे इस्तेमाल किया:

var success:Boolean = roll(0.5); // True 50% of the time.
var again:Boolean = roll(0.25); // True 25% of the time.

एक यादृच्छिक रंग बनाएँ

कोई भी यादृच्छिक रंग पाने के लिए:

function randomColor():uint
{
    return Math.random() * 0xFFFFFF;
}

यदि आपको लाल, हरे और नीले चैनलों पर अधिक नियंत्रण की आवश्यकता है:

var r:uint = Math.random() * 0xFF;
var g:uint = Math.random() * 0xFF;
var b:uint = Math.random() * 0xFF;

var color:uint = r << 16 | g << 8 | b;

यहां आप r , g और b लिए अपनी सीमा निर्दिष्ट कर सकते हैं (यह उदाहरण 0-255 से है)।

वर्णमाला के माध्यम से बेतरतीब ढंग से लूप

var alphabet:Vector.<String> = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                                             "H", "I", "J", "K", "L", "M", "N",
                                             "O", "P", "Q", "R", "S", "T", "U",
                                             "V", "W", "X", "Y", "Z" ];

while (alphabet.length > 0)
{
    var letter:String = alphabet.splice(int(Math.random() *
                                            alphabet.length), 1)[0];
    trace(letter);
}

उदाहरण आउटपुट:

वी, एम, एफ, ई, डी, यू, एस, एल, एक्स, के, क्यू, एच, ए, आई, डब्ल्यू, एन, पी, वाई, जे, सी, टी, ओ, आर, जी, बी, जेड

एक सरणी यादृच्छिक करें

var alphabet:Array = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ];

for (var i:int=alphabet.length-1;i>0;i--) {
    var j:int=Math.floor(Math.random()*(i+1));
    var swap=alphabet[j];
    alphabet[j]=alphabet[i];
    alphabet[i]=swap;
}
trace(alphabet);    

उदाहरण आउटपुट

बी, जेड, डी, आर, यू, एन, हे, एम, मैं, एल, सी, जे, पी, एच, डब्ल्यू, एस, क्यू, ई, के, टी, एफ, वी, पहला, दूसरा, जी, ए

इस विधि को फिशर-येट्स सरणी फेरबदल के रूप में जाना जाता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow