2011-11-03 16 views
10

कोई भी पर Math.random परिणाम पर क्यों कॉल करेगा? मैंने इसे देखा है:मैं Math.roor के साथ Math.floor को क्यों जोड़ूं?

Math.floor(Math.random() * num); 

क्या कोई कृपया समझा सकता है?

+0

"हम" कौन है? :) –

+0

@quixoto क्योंकि मैंने इस कोड को कई बार देखा है, यही कारण है कि मैंने कहा "हम", बीमार इसे वैसे भी बदलें> –

+1

मैं आपके शब्द की आलोचना नहीं कर रहा था। इस तरह के प्रश्न के लिए वास्तव में यह बताने के लिए उपयोगी है कि यह अक्सर आप देखते हैं, या अक्सर इस तरह के कोड में देखते हैं, इसलिए लोगों के पास संदर्भ है और पता है कि आपको सबसे अच्छा जवाब कैसे दिया जाए। –

उत्तर

17

Math.random रिटर्न 0 और 1.

जो फ्लोटिंग प्वाइंट नंबर रेंज [0 में एक फ्लोटिंग प्वाइंट, छद्म यादृच्छिक संख्या देता है, 1) कि 0 से है, (सम्मिलित) तक कि 1 (अनन्य) सहित, जिसमें आप अपनी वांछित सीमा तक स्केल कर सकते हैं।

एन द्वारा इसे गुणा करके 0 (समावेशी) और एन (अनन्य) के बीच एक फ़्लोटिंग पॉइंट नंबर देता है।

Math.floor तब इस फ़्लोटिंग पॉइंट नंबर को पूर्णांक 0 और एन -1 (समावेशी) के बीच कनवर्ट करने के लिए उपयोग किया जाता है।

1

Math.random() आपको एक लंबा, यादृच्छिक दशमलव देगा। एक यादृच्छिक पूर्ण संख्या प्राप्त करने के लिए आमतौर पर जो होता है वह दशमलव को 10, 100, 1000, आदि से गुणा करता है। हालांकि, चूंकि ऐसा दशमलव बहुत लंबा है, पूर्ण संख्या प्राप्त करने के लिए, आप उस संख्या को नीचे करने के लिए Math.floor() का उपयोग करें।

1

मैं Math.random के साथ Math.floor क्यों जोड़ूं?

आप उन्हें गठबंधन करते हैं क्योंकि अन्यथा यह एक फ्लोट लौटाएगा। Math.floor का उपयोग करना सुनिश्चित करता है कि यह निर्दिष्ट सीमा के अंदर एक पूर्ण संख्या है।

Math.random 0 और 1 के बीच एक फ्लैट लौटाता है। इसे num या अधिकतम सीमा से गुणा करके आप उस संख्या के अधिकतम (1 * num) के साथ मूल्य प्राप्त करते हैं। तो फिर, Math.floor बस इसे एक पूर्ण संख्या के लिए मजबूर कर रहा है।


परदे के पीछे:

यादृच्छिक संख्या -> .35 - अधिकतम से गुणा> (num) 11 के -> हो जाता है 3.85 -> Math.floor (3.85) -> 3.


मन रखें, numमैक्स + 1 है। num से 5 सेट करने से केवल संख्या 1-4 उत्पन्न होगी! http://www.javascriptkit.com/javatutors/randomnum.shtml

टाडा :)

0

Math.random() रिटर्न के बीच [0,1)

हम .floor का उपयोग यह पूर्णांक बनाना 0.8747230430599302 की तरह कुछ:


आप अधिक जानकारी के लिए इस लिंक की जाँच कर सकते हैं निकटतम पूर्णांक तक।उदाहरण के लिए:

Math.random()*5 == 2.5889716914389282 यह [0,5) के बीच एक संख्या उत्पन्न करता है।

Math.floor(Math.random()*5) == 2 //in this scenario Math.floor(Math.Random() * num) का विश्लेषण करना में यह अलग-अलग हिस्सों है और प्रत्येक टुकड़ा समझा [0,4]

12

बीच की एक संख्या उत्पन्न करता है, तो आप इस मिल:

Math.random() आप 0 और 1 के बीच एक यादृच्छिक दशमलव संख्या देता है , 0 सहित, लेकिन 1 सहित नहीं। तो, यह आपको 0.38548569372 जैसा कुछ दे सकता है।

Math.random() * num आपको 0 और num के बीच यादृच्छिक दशमलव संख्या देता है, जिसमें 0 शामिल हैं, लेकिन संख्या शामिल नहीं है। इसलिए, यदि संख्या 10 थी, तो यह आपको 3.8548569372 दे सकती है।

Math.floor(Math.random() * num)) आपको 0 और num के बीच एक यादृच्छिक पूर्णांक संख्या देता है, जिसमें 0 शामिल हैं, लेकिन संख्या शामिल नहीं है। तो, यह आपको दे सकता है।

Math.floor() दशमलव संख्या को केवल पूर्णांक भाग में छोटा करता है। एक यादृच्छिक पूर्णांक अक्सर एक सरणी से एक यादृच्छिक मान प्राप्त करने के लिए प्रयोग किया जाता है (जिसे एक पूर्णांक होना चाहिए)।

+0

हाय-जैक के लिए खेद है, लेकिन स्पष्टीकरण के लिए ... क्या फर्श दौर नीचे है, जबकि छत के दौर ऊपर है? – Myles

+1

@Myles - 'Math.floor() 'आपको अगले निचले पूर्णांक देता है। 'Math.ceil()' आपको अगले उच्च पूर्णांक देता है। 'Math.round()' मान की जांच करता है और आपको अगले निचले या अगले उच्च पूर्णांक देता है जिसके आधार पर यह निकट होता है। भविष्य में, [एमडीएन साइट] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor) इन सभी प्रकार के प्रश्नों के लिए एक उत्कृष्ट संदर्भ है। – jfriend00

0

इसका उपयोग 0 और (अधिकतम -1) के बीच एक पूर्णांक यादृच्छिक संख्या प्राप्त करने के लिए किया जाता है।

दूसरी ओर उस में

const randomInt = Math.random() * num | 0; 

| 0 रूप | 0 उपयोग करने के लिए तेज है एक द्विआधारी या 0 के जो जावास्क्रिप्ट को प्रभावी ढंग से कहते हैं परिणाम एक पूर्णांक में बदल जाती है कल्पना से पहले | होता है। ध्यान दें कि | 0Math.floor जैसा नहीं है। | 0 राउंड से 0 जबकि Math.floor राउंड डाउन।

  | 0 Math.floor   
------+------+------------ 
    2.5 | 2 | 2 
    1.5 | 1 | 1 
    0.5 | 0 | 0 
-0.5 | 0 | -1 
-1.5 | =1 | -2 
-2.5 | -2 | -3 
0
var num = Math.floor(Math.random() * 1000); // e.g. 885 

var flNum = Math.random() * 1000; //e.g. 885.9936205333221 

math.random() की कोशिश करो * 1000 उदाहरण के लिए, आप कुछ इस तरह मिल सकता है: 885.9936205333221, कई मामलों में हम एक गोल संख्या की आवश्यकता है, तो कई डेवलपर्स Math.floor या गणित के साथ उपयोग करें .ceil 885 की तरह एक पूर्णांक प्राप्त करने के लिए, यदि आपके मामले में, आपको फ्लोट नंबर होने पर कोई फर्क नहीं पड़ता है, तो इसे छोड़ दें ...

Math.floor कैसे काम करता है, इस बारे में अधिक जानकारी के लिए, इस लिंक को देखें:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/floor