2017-08-17 32 views
5

मैं एक यादृच्छिक संख्या जनरेटर है कि 1 से 9 के बीच संख्या के एक स्ट्रिंग उत्पन्न कर पाने के लिए कोशिश कर रहा हूँ, और अगर यह एक 8 उत्पन्न करता है, यह 8 पिछले और फिर प्रदर्शित करना चाहिए साथ उत्पन्न करना बंद करो।रैंडम में नंबर एक do-जबकि पाश अगर बयान

अब तक यह 1 2 3 4 5 6 7 8 प्रिंट करता है, लेकिन यह संख्याओं की यादृच्छिक स्ट्रिंग उत्पन्न नहीं करता है, इसलिए मुझे यह जानने की ज़रूरत है कि लूप वास्तव में ऊपर बताए अनुसार यादृच्छिक संख्या कैसे उत्पन्न करें, किसी भी मदद के लिए धन्यवाद !

जावास्क्रिप्ट

// 5. BONUS CHALLENGE: Write a while loop that builds a string of random 
integers 
// between 0 and 9. Stop building the string when the number 8 comes up. 
// Be sure that 8 does print as the last character. The resulting string 
// will be a random length. 
print('5th Loop:'); 
text = ''; 

// Write 5th loop here: 
function getRandomNumber(upper) { 
    var num = Math.floor(Math.random() * upper) + 1; 
    return num; 

} 
i = 0; 
do { 
    i += 1; 

    if (i >= 9) { 
     break; 
    } 
    text += i + ' '; 
} while (i <= 9); 


print(text); // Should print something like `4 7 2 9 8 `, or `9 0 8 ` or `8 
`. 
+3

'Math.ceil (math.random() * 7) + 1' अपने है दोस्त। – tilz0R

+0

आपका तर्क दोषपूर्ण दिखता है। – ABcDexter

उत्तर

4

आप इसे में एक और अधिक बस जिस तरह से कर सकते हैं:

समाधान एक सरणी में यादृच्छिक जनरेट की गई संख्या push है और फिर करने के क्रम में join विधि का उपयोग शामिल हो सरणी के सभी तत्वों स्ट्रिंग वांछित।

function getRandomNumber(upper) { 
 
    var num = Math.floor(Math.random() * upper) + 1; 
 
    return num; 
 
} 
 
var array = []; 
 
do { 
 
    random = getRandomNumber(9); 
 
    array.push(random); 
 
} while(random != 8) 
 
console.log(array.join(' '));

+1

बहुत बहुत धन्यवाद! सरणी और इस तरह के बारे में भूल गए। – hannacreed

+0

@hannacreed, आपका स्वागत है। –

1

प्रिंट() एक समारोह लक्ष्य दस्तावेज़ प्रिंट करना है जो है, तो आप कंसोल पर दिखाना console.log() का उपयोग करना चाहिए।

उदाहरण var eightAppear = false के लिए, अपने पाश से पहले एक बूलियन रखो

आपकी हालत अब की तरह do {... }while(!eightAppear)

देखो फिर अपने पाश अंदर 0 और 9. अपनी स्ट्रिंग Concat Math.floor(Math.random()*10) के बीच एक यादृच्छिक संख्या उत्पन्न करते हैं। संख्या true

को eightAppear के 8 परिवर्तन मूल्य है अगर यह एक अभ्यास होने लगते हैं के बाद से, मैं तुम्हें यह कोड दूँगा, अब मुश्किल नहीं होना चाहिए :)

1

इसलिए नहीं कि यह बेहतर है, लेकिन क्योंकि हम कर सकते हैं (और मैं जनरेटर की तरह :)), पुनरावर्तक समारोह के साथ एक विकल्प (ES6 आवश्यक):

function* getRandomNumbers() { 
 
    for(let num;num !==8;){ 
 
    num = Math.floor((Math.random() * 9) + 1); 
 
    yield num;  
 
    } 
 
} 
 

 
let text= [...getRandomNumbers()].join(' '); 
 
console.log(text);

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