উত্তর:
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 পর্যন্ত একটি নম্বর দেয়।
সম্পাদনা 2: @ ডানিয়েল এবং @ আআআআআ বি বি টিএসকে টিক্স দিন। আমার প্রথম উত্তরটি ভুল ছিল।
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 এলোমেলো উদাহরণগুলি নির্দিষ্ট পরিস্থিতিতে একই মান প্রদান করবে।
ফাংশন ডকটি বোঝার জন্য প্রথমে এটি দেখতে একটি ভাল অনুশীলন ( https://docs.oracle.com/javase/8/docs/api/java/util/Random.html )
এখন আমরা বুঝতে পেরেছি যে নেক্সটডুবল () ফাংশনের ফিরে আসা মানটি 0.0 এবং 1.0 এর মধ্যে একটি সিউডোরান্ডম মান যা আমরা এটি আমাদের সুবিধার জন্য ব্যবহার করতে পারি।
এ এবং বি জিভিনের মধ্যে একটি এলোমেলো সংখ্যা তৈরি করার জন্য যে সীমানাটি বৈধ (এ> বি) আমাদের প্রয়োজন: 1. ক এবং বি এর মধ্যে সীমাটি সন্ধান করুন যাতে আমরা জানতে পারি যে আমাদের কতগুলি "পদক্ষেপ" রয়েছে। ২. কতগুলি পদক্ষেপ নিতে হবে তা নির্ধারণ করতে এলোমেলো ফাংশনটি ব্যবহার করুন (কারণ প্রত্যাবর্তিত মান 0.0 এবং 1.0 এর মধ্যে হয় তবে আপনি এটিকে "বর্ধনের একটি এলোমেলো শতাংশ বেছে নিন" হিসাবে ভাবতে পারেন 3.. অফসেট যুক্ত করুন
এত কিছুর পরেও, আপনি দেখতে পাচ্ছেন যে ভিড়টি আপনাকে আমার মতে এটি করার সবচেয়ে সহজ এবং সর্বাধিক সাধারণ উপায় দিয়েছে
ডাবল র্যান্ডমভ্যালু = রেঞ্জমিন + (রেঞ্জম্যাক্স - রেঞ্জমিন) * r.nextDouble ();
ডাবল র্যান্ডমভ্যালু = অফসেট + (ব্যাপ্তি) * (0.0-1.0 এর মধ্যে র্যান্ডমভাল)
double rangeMax= Double.MAX_VALUE;
এবংdouble rangeMin= -rangeMax;
আপনি সর্বদা বিনিময়ে একটি অসীম মান পাবেন। আপনি জন্য পরীক্ষা করতে চাইতে পারেনDouble.valueOf(rangeMax-rangeMin).isInfinite()
।