javascript - atscript - स्क्रिप्टिंग भाषा




जावास्क्रिप्ट में दो संख्याओं के बीच यादृच्छिक संख्या उत्पन्न करें (12)

Math.random () फ़ंक्शन श्रेणी में एक फ़्लोटिंग-पॉइंट, छद्म-यादृच्छिक संख्या देता है [0, 1); अर्थात, 0 (समावेशी) तक है लेकिन इसमें 1 (अनन्य) शामिल नहीं है

आइए min को max-min से min randomly से add

केस 0

min + 0 * ( max - min ) = मिनट

मामला एक

min + 1 * ( max - min ) = अधिकतम

Math.random 0 <= r <1 का उपयोग करके यादृच्छिक केस

min + आर * ( max - min ) = एक्स , जहां एक्स की min लंबाई <= X < अधिकतम है

उपर्युक्त परिणाम एक्स एक यादृच्छिक संख्यात्मक है। हालांकि Math.random () के कारण हमारी बाएं बाउंड समावेशी है, और दाएं बाध्य अनन्य है। हमारी दाहिने बाध्यता को शामिल करने के लिए हम दाएं को बाध्य करते हैं और परिणाम को फर्श करते हैं।

function generateRandomInteger(min, max) {
  return Math.floor(min + Math.random()*(max+1 - min))
}

यादृच्छिक संख्या प्राप्त करने के लिए

generateRandomInteger(-20, 20) ;

जावास्क्रिप्ट में एक निर्दिष्ट सीमा में यादृच्छिक संख्या उत्पन्न करने का कोई तरीका है (उदाहरण के लिए 1 से 6: 1, 2, 3, 4, 5, या 6)?


Math.random()

Math.random() डेवलपर नेटवर्क दस्तावेज़ से:

// Returns a random integer between min (included) and max (included)

function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

उपयोगी उदाहरण:

// 0 -> 10
Math.floor(Math.random() * 11);

// 1 -> 10
Math.floor(Math.random() * 10) + 1;

// 5 -> 20
Math.floor(Math.random() * 16) + 5;

// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;

अन्य समाधान:

  • (Math.random() * 6 | 0) + 1
  • ~~(Math.random() * 6) + 1

उदाहरण

1 और 10 के बीच एक यादृच्छिक संख्या लौटें:

Math.floor((Math.random() * 10) + 1);

परिणाम हो सकता है: 3

अपने आप को आजमाएं: here

-

या lodash / undescore का उपयोग कर:

_.random(min, max)

डॉक्स: - lodash.com/docs#random - Underscore


गणित मेरा मजबूत बिंदु नहीं है, लेकिन मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जहां मुझे सकारात्मक और नकारात्मक दोनों के बीच बहुत यादृच्छिक संख्या उत्पन्न करने की आवश्यकता है।

function randomBetween(min, max) {
    if (min < 0) {
        return min + Math.random() * (Math.abs(min)+max);
    }else {
        return min + Math.random() * max;
    }
}

उदाहरण के लिए

randomBetween(-10,15)//or..
randomBetween(10,20)//or...
randomBetween(-200,-100)

बेशक, आप यह सुनिश्चित करने के लिए कुछ सत्यापन भी जोड़ सकते हैं कि आप संख्याओं के अलावा किसी अन्य चीज़ के साथ ऐसा नहीं करते हैं। यह भी सुनिश्चित करें कि न्यूनतम हमेशा अधिकतम से कम या बराबर है।


मैं टाइपस्क्रिप्ट में लिखे गए यादृच्छिक संख्या जेनरेटर खोज रहा था और मैंने सभी उत्तरों को पढ़ने के बाद इसे लिखा है, उम्मीद है कि यह टाइपस्क्रिप्ट कोडर के लिए काम करेगा।

    Rand(min: number, max: number): number {
        return (Math.random() * (max - min + 1) | 0) + min;
    }   

मैंने पाया कि ऊपर फ्रांसिस के समाधान में परिणामों में न्यूनतम या अधिकतम संख्या शामिल नहीं है, इसलिए मैंने इसे इस तरह बदल दिया:

function randomInt(min,max)
{
    return Math.floor(Math.random()*(max-(min+1))+(min+1));
}

यदि आप 1 और 6 के बीच प्राप्त करना चाहते हैं, तो आप गणना करेंगे:

Math.floor(Math.random() * 6) + 1  

कहा पे:

  • 1 प्रारंभ संख्या है
  • 6 संभावित परिणामों की संख्या है (1 + प्रारंभ (6) - अंत (1) )

सेंस आपको अधिकतम संख्या में 1 जोड़ने की आवश्यकता है, और उसके बाद किसी भी काम के लिए न्यूनतम संख्या घटाएं, और मुझे बहुत सारे यादृच्छिक इंटीजर बनाने की ज़रूरत है, यह फ़ंक्शन काम करता है।

var random = function(max, min) {
    high++;
    return Math.floor((Math.random()) * (max - min)) + min;
};

यह नकारात्मक, और सकारात्मक दोनों संख्याओं के साथ काम करता है, और मैं लाइब्रेरी के लिए दशमलव पर काम कर रहा हूं।


Math.random() बजाय, आप क्रिप्टो. crypto.getRandomValues() का उपयोग समान रूप से वितरित क्रिप्टोग्राफ़िक-सुरक्षित यादृच्छिक संख्या उत्पन्न करने के लिए कर सकते हैं। यहां एक उदाहरण दिया गया है:

function randInt(min, max) {
  var MAX_UINT32 = 0xFFFFFFFF;
  var range = max - min;

  if (!(range <= MAX_UINT32)) {
    throw new Error(
      "Range of " + range + " covering " + min + " to " + max + " is > " +
      MAX_UINT32 + ".");
  } else if (min === max) {
    return min;
  } else if (!(max > min)) {
    throw new Error("max (" + max + ") must be >= min (" + min + ").");
  }

  // We need to cut off values greater than this to avoid bias in distribution
  // over the range.
  var maxUnbiased = MAX_UINT32 - ((MAX_UINT32 + 1) % (range + 1));

  var rand;
  do {
    rand = crypto.getRandomValues(new Uint32Array(1))[0];
  } while (rand > maxUnbiased);

  var offset = rand % (range + 1);
  return min + offset;
}

console.log(randInt(-8, 8));          // -2
console.log(randInt(0, 0));           // 0
console.log(randInt(0, 0xFFFFFFFF));  // 944450079
console.log(randInt(-1, 0xFFFFFFFF));
// Uncaught Error: Range of 4294967296 covering -1 to 4294967295 is > 4294967295.
console.log(new Array(24).fill().map(n => randInt(8, 12)));
// [11, 8, 8, 11, 10, 8, 8, 12, 12, 12, 9, 9,
//  11, 8, 11, 8, 8, 8, 11, 9, 10, 12, 9, 11]
console.log(randInt(10, 8));
// Uncaught Error: max (8) must be >= min (10).


function randomIntFromInterval(min,max)
{
    return Math.floor(Math.random()*(max-min+1)+min);
}

यह "अतिरिक्त" क्या करता है यह यादृच्छिक अंतराल की अनुमति देता है जो 1 से शुरू नहीं होता है। उदाहरण के लिए आप 10 से 15 तक यादृच्छिक संख्या प्राप्त कर सकते हैं। लचीलापन।


var x = 6; // can be any number
var rand = Math.floor(Math.random()*x) + 1;




random