මෙම ප්රවේශය ප්රවේශයකට වඩා පක්ෂග්රාහී හා කාර්යක්ෂම නොවන බව සලකන්න 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 ට වාත්තු කිරීමෙන් දශම කොටස කපා දැමිය යුතුය . මෙය සිදු කරන්නේ:
Min + (int)(Math.random() * ((Max - Min) + 1))
එහි ඔබට එය තිබේ. පරාසය තුළ අහඹු පූර්ණ සංඛ්යාවක් [Min,Max]
, හෝ උදාහරණයක් ලෙස [5,10]
:
5 + (int)(Math.random() * ((10 - 5) + 1))