जवाबों:
rangeMin
और के बीच एक यादृच्छिक मूल्य उत्पन्न करने के लिए rangeMax
:
Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
rangeMin
और rangeMax
हो सकती है, तो उनके बीच 10,000,000 दोहरे मान हो सकते हैं। का परिणाम (rangeMax - rangeMin) * r.nextDouble()
केवल उन संभावित 10,000,000 मूल्यों में से 10,000 का चयन करेगा। (मुझे लगता है कि यह एक सही व्याख्या नहीं है, लेकिन शायद यह थोड़ा मदद करता है ...)
यह सवाल जावा 7 रिलीज़ से पहले पूछा गया था, लेकिन अब, जावा 7 (और ऊपर) एपीआई का उपयोग करने का एक और संभव तरीका है:
double random = ThreadLocalRandom.current().nextDouble(min, max);
nextDouble
न्यूनतम (समावेशी) और अधिकतम (अनन्य) के बीच एक छद्म आयामी दोगुना मूल्य लौटाएगा। सीमाएं जरूरी नहीं हैं int
, और हो सकती हैं double
।
इसे इस्तेमाल करो:
double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);
संपादित करें:
new Random().nextDouble()
: बेतरतीब ढंग से 0 और 1 के बीच एक संख्या उत्पन्न करता है।
start
: प्रारंभ संख्या, संख्या को "दाईं ओर" स्थानांतरित करने के लिए
end - start
: मध्यान्तर। यादृच्छिक आपको इस संख्या का 0% से 100% तक देता है, क्योंकि यादृच्छिक आपको 0 से 1 तक की संख्या प्रदान करता है।
EDIT 2: Tks @daniel और @aaa bbb। मेरा पहला जवाब गलत था।
import java.util.Random;
public class MyClass {
public static void main(String args[]) {
Double min = 0.0; // Set To Your Desired Min Value
Double max = 10.0; // Set To Your Desired Max Value
double x = (Math.random() * ((max - min) + 1)) + min; // This Will Create A Random Number Inbetween Your Min And Max.
double xrounded = Math.round(x * 100.0) / 100.0; // Creates Answer To The Nearest 100 th, You Can Modify This To Change How It Rounds.
System.out.println(xrounded); // This Will Now Print Out The Rounded, Random Number.
}
}
यादृच्छिक का मुख्य विचार यह है कि यह एक छद्म आयामी मूल्य देता है। पूरी तरह से यादृच्छिक कार्यों जैसी कोई चीज नहीं है, इसलिए, एक ही बीज का उपयोग करने वाले 2 यादृच्छिक उदाहरण कुछ शर्तों में समान मूल्य वापस कर देंगे।
इसे समझने के लिए पहले फंक्शन doc को देखना एक अच्छा अभ्यास है ( https://docs.oracle.com/javase/8/docs/api/java/util/Random.html )
अब जब हम समझते हैं कि फ़ंक्शन का लौटाया गया मान अगलेडॉगल () 0.0 और 1.0 के बीच एक छद्म आयामी मान है तो हम इसे अपने लाभ के लिए उपयोग कर सकते हैं।
A और B givin के बीच एक यादृच्छिक संख्या बनाने के लिए जो सीमाएँ मान्य हैं (A> B) हमें इसकी आवश्यकता है: 1. A और B के बीच की सीमा ज्ञात करें ताकि हम जान सकें कि हमारे पास कितने "चरण" हैं। 2. यादृच्छिक चरणों का उपयोग करके यह निर्धारित करें कि कितने कदम उठाने हैं (क्योंकि लौटाया गया मान 0.0 और 1.0 के बीच है, आप इसके बारे में सोच सकते हैं कि "वृद्धि का एक यादृच्छिक प्रतिशत चुनें" 3. ऑफसेट जोड़ें
उस सब के बाद, आप देख सकते हैं कि भीड़ ने आपको मेरी राय में ऐसा करने का सबसे आसान और सबसे सामान्य तरीका दिया
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble ();
डबल रैंडम वेल = ऑफ़सेट + (रेंज) * (रैंडमवैल के बीच 0.0-1.0)
double rangeMax= Double.MAX_VALUE;
औरdouble rangeMin= -rangeMax;
बदले में आपको हमेशा एक अनंत मूल्य मिलेगा। आप के लिए जाँच कर सकते हैंDouble.valueOf(rangeMax-rangeMin).isInfinite()
।