2010-10-18 10 views
5

अब तक मैं इस कोडमैं 450 और 150 के बीच जावा में यादृच्छिक संख्या कैसे उत्पन्न करूं जो कि 10 का एक बहु है?

int w = (int)((450-150)*random()+150); 

यह 450 और 150 के बीच की संख्या जनरेट करता है ... लेकिन मैं कैसे उस नंबर के 10

+0

ओएमजी। यह उत्तर की गुच्छा की तरह दिखता है। :) – ivorykoder

+3

@ ग्रेग डी - इस बारे में कुछ भी नहीं है जो मुझे होमवर्क की तरह गंध करता है। इसके अलावा, यह "मुझे teh codez" प्रश्न से बहुत दूर है। ओपी स्पष्ट रूप से कुछ काम कर रहा है ... बस अंतिम चरण की जरूरत है। निश्चित रूप से 'गंध जैसी होमवर्क' टैग को वापस लाने का कोई कारण नहीं है। –

+3

हाँ यह होमवर्क है ... क्या इसमें कुछ गड़बड़ है क्योंकि मैं दिखा रहा हूं कि मैंने अपना कुछ काम किया है? – Cheesegraterr

उत्तर

13

आसान एक से अधिक बनाने के लिए पता नहीं है। सिर्फ 15 और 45 के बीच यादृच्छिक संख्या उत्पन्न ... तो 10 से गुणा करें:

int w = ((int)((45 - 15) * random() + 15)) * 10; 
+5

यह सही उत्तर कैसे है? चूंकि यह पूर्णांक को छंटनी से पहले 10 से गुणा करता है, यह 10 के गुणक उत्पन्न नहीं करता है। – Gabe

+0

मैं सहमत हूं कि यह एक बग है –

+1

@Gabe - माता-पिता को ठीक किया गया। –

11

45 से 15 के बीच एक यादृच्छिक संख्या उठाओ और 10 के साथ गुणा -

int w = (int)((45-15)*random()+15) * 10; 
4

बस के बीच एक यादृच्छिक पूर्णांक लेने 15 और 45 है, तो 10 से गुणा करें:

int w = 10*(int)((45-15)*random()+15);

7

यह होमवर्क की तरह बदबू आ रही है, लेकिन मैं काट देंगे:

यादृच्छिक संख्याओं की विस्तृत श्रृंखला से शुरू होने और परिणाम को सीमित करने के बजाय, संख्याओं की संकीर्ण सीमा से शुरू होने और परिणाम का विस्तार करने पर विचार करें।

आपका कोड लगभग 30 मानों में से एक उत्पन्न करना चाहिए, है ना? तो 0 और 30 के बीच एक यादृच्छिक मान उत्पन्न करने का प्रयास करें, फिर उस मान को उस श्रेणी में बदल दें जो आपको चाहिए।

(मैं 10 से गुणा करने का सुझाव देते हैं चाहते हैं और 150 जोड़ने)

+1

+1: आईएमओ, यह समस्या को दर्शाने का सबसे स्पष्ट तरीका है। – Ani

1

हैं, के रूप में मुझे लगता है, ओपी दोनों सिरों पर एक समावेशी रेंज की जरूरत है: जरूरत है दोनों संख्या 150 और 450, वहाँ एक सीमा त्रुटि है जवाबों पर मैंने अभी तक देखा है।

Math.random() 0.0 (समावेशी) और 1.0 (अनन्य) के बीच एक संख्या देता है। यदि आप 15 और 45 (दोनों समावेशी) के बीच की संख्या चाहते हैं तो आपकी मूल्यों की सीमा वास्तव में (45 - 15 + 1) है ... यानी: कुल 31 मान।

सही कोड होना चाहिए:

int w = ((int)(((45 - 15 + 1) * random()) + 15)) * 10; 

(45 - 15 + 1) * यादृच्छिक() = [0.0..30.999999)
[0..31) + 15 = [15.0 .. 45.9 99 999)
(int) [15.0..46.0) = [15..45] - पूर्णांक रूपांतरण एक छिड़काव है, न कि एक गोल
[15..45] * 10 = {150, 160, 170, 180, ..., 440, 450}

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

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