2012-10-14 10 views
9

यदि संख्या पैरामीटर 52 है, तो कितने संभावित रिटर्न मूल्य हैं? क्या यह 52 या 53 है? अगर मैं इसे सही ढंग से समझता हूं, तो Math.random यादृच्छिक मानों का उपयोग 0 से 1 समावेशी करता है। यदि ऐसा है, तो 0 एक संभावित वापसी मूल्य है और 52 है। इसके परिणामस्वरूप 53 संभव रिटर्न मूल्य हैं। क्या ये सही है? कारण मैं पूछता हूं कि एक पुस्तक जिसे मैं सीख रहा हूं, इस कोड का उपयोग कार्ड के डेक के लिए करता है। मुझे आश्चर्य है कि अंक 51 के बराबर होना चाहिए?जावास्क्रिप्ट: Math.random

धन्यवाद ...

function getRandom(num) { 
    var my_num = Math.floor(Math.random * num); 
    return my_num; 
}; 
+0

यह एक करने के लिए शून्य, * शून्य की * समावेशी लेकिन * एक के * अनन्य है। – Pointy

+0

नीचे दिए गए सभी उत्तरों के लिए धन्यवाद। पॉइंटी ने इसे नीचे दूसरों के रूप में मारा। 1 समावेशी नहीं है (यह मेरी गलतफहमी थी, मैंने सोचा था कि 0 और 1 दोनों समावेशी थे) ताकि सभी 0 से 51 या कुल 52 रिटर्न मूल्यों को वापस कर सकें ... – nanonerd

उत्तर

12
Math.floor(Math.random() * num) // note random() is a function. 

इस 0 num को (0 सहित) (नहीं num सहित) से सभी पूर्णांकों वापस आ जाएगी।

Math.random 0 (समावेशी) और 1 (अनन्य) के बीच एक संख्या देता है। एक्स द्वारा परिणाम गुणा करके आपको 0 (समावेशी) और एक्स (अनन्य) के बीच देता है। एक्स को जोड़ना या घटाना + -X द्वारा श्रेणी को बदलता है।

यहाँ MDN से कुछ उपयोगी कार्यों है:

// Returns a random number between 0 (inclusive) and 1 (exclusive) 
function getRandom() { 
    return Math.random(); 
} 

// Returns a random number between min and max 
function getRandomArbitrary(min, max) { 
    return Math.random() * (max - min) + min; 
} 

// Returns a random integer between min and max 
// Using Math.round() will give you a non-uniform distribution! 
function getRandomInt(min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min; 
} 
2

के बाद से math.random का मान 0 से 1 (अनन्य) करने के लिए भिन्न होता है; इसलिए यदि आप getRandom में 52 पास करते हैं, तो वापसी मान 0 से 52 (अनन्य) से भिन्न होगा। तो getRandom केवल 52 मान वापस कर सकते हैं। जैसा कि आप Math.floor का उपयोग कर रहे हैं। अधिकतम मूल्य वापस किया जा सकता 51.

+1

यह गलत है। 'Math.random()' कभी वापस नहीं आएगा। – Pointy

+0

@ पॉइंटिंग पॉइंटिंग के लिए धन्यवाद। मैं बदलाव करता हूँ। – Anoop

3

के बाद से Math.random (1समावेशी नहीं है) [0,1) बीच कोई वास्तविक संख्या, परिणाम गुणा [0, 52) बीच कोई वास्तविक संख्या रिटर्न देता है।

चूंकि आप परिणाम फर्श कर रहे हैं, तो अधिकतम संख्या 51 है और 52 विशिष्ट मान हैं (0 गिनती)।

+0

उसे वहां 'Math.floor()' पर कॉल आया है ... वह वास्तव में * कॉलिंग * 'Math.random' नहीं है! – Pointy

+0

@ पॉइंटी: ठीक है, बस ध्यान दिया। मुझे लगता है कि फ़ंक्शन को कॉल करना एक टाइपो नहीं है, क्योंकि उसने कहा कि उसे एक पुस्तक से कोड मिला है। या त्रुटि पुस्तक में है, जो अधिक संबंधित है। –

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

  • कोई संबंधित समस्या नहीं^_^