নোট করুন যে এই পদ্ধতির চেয়ে কোনও পক্ষপাতদুষ্ট এবং কোনও nextInt
পদ্ধতির চেয়ে কম দক্ষ , https://stackoverflow.com/a/738651/360211
এটি সম্পাদনের জন্য একটি স্ট্যান্ডার্ড প্যাটার্ন হ'ল:
Min + (int)(Math.random() * ((Max - Min) + 1))
জাভা ম্যাথ লাইব্রেরি ফাংশন Math.random () সীমার মধ্যে একটি ডবল মান উত্পন্ন [0,1)
। লক্ষ্য করুন এই পরিসীমাটিতে 1 টি অন্তর্ভুক্ত নেই।
প্রথমে মানগুলির একটি নির্দিষ্ট পরিসীমা পেতে, আপনাকে যে মানগুলির আচ্ছাদন করতে চান তার পরিসীমা দ্বারা গুন করা দরকার।
Math.random() * ( Max - Min )
এটি পরিসরে একটি মান দেয় [0,Max-Min)
, যেখানে 'সর্বোচ্চ-মিন' অন্তর্ভুক্ত থাকে না।
উদাহরণস্বরূপ, আপনি যদি চান তবে [5,10)
আপনার ব্যবহারের জন্য পাঁচটি পূর্ণসংখ্যার মান আবশ্যক
Math.random() * 5
এটি [0,5)
5 টি অন্তর্ভুক্ত নয় এমন পরিসরে একটি মান ফিরিয়ে আনবে ।
এখন আপনি যে টার্গেটটি করছেন তার মধ্যে এই ব্যাপ্তিটি স্থানান্তর করতে হবে। আপনি ন্যূনতম মান যুক্ত করে এটি করেন।
Min + (Math.random() * (Max - Min))
আপনি এখন সীমাতে একটি মান পাবেন [Min,Max)
। আমাদের উদাহরণ অনুসরণ করে, এর অর্থ [5,10)
:
5 + (Math.random() * (10 - 5))
তবে, এটি এখনও অন্তর্ভুক্ত করে না Max
এবং আপনি একটি দ্বিগুণ মান পাচ্ছেন। Max
মানটি অন্তর্ভুক্ত করার জন্য আপনাকে আপনার পরিসীমা প্যারামিটারে 1 যুক্ত করতে হবে (Max - Min)
এবং তারপরে দশমিক অংশটি একটি int এ castালাই করে কাটাতে হবে। এটি এর মাধ্যমে সম্পন্ন হয়:
Min + (int)(Math.random() * ((Max - Min) + 1))
এবং সেখানে আপনি এটা আছে। পরিসীমাটিতে একটি এলোমেলো পূর্ণসংখ্যা মান [Min,Max]
বা উদাহরণ অনুসারে [5,10]
:
5 + (int)(Math.random() * ((10 - 5) + 1))