يشرح هذا الفصل أولاً عدة طرق لإنشاء أرقام عشوائية Java ، ثم يوضحها من خلال أمثلة.
بشكل عام ، هناك ثلاث طرق لتوليد أرقام عشوائية في جافا:
(01). استخدم System.CurrentTimeMillis () للحصول على عدد طويل من ميلي ثانية من الوقت الحالي.
(02). إرجاع قيمة مزدوجة بين 0 و 1 عبر Math.Random ().
(03). إنشاء رقم عشوائي من خلال الفئة العشوائية. هذا هو فئة الأدوات العشوائية المهنية مع وظائف قوية. تستخدم الطريقة الأولى System.CurrentTimeMillis () للحصول على أرقام عشوائية
احصل على الرقم العشوائي من خلال System.CurrentTimeMillis (). إنه في الواقع يحصل على رقم المللي ثانية الحالي ، وهو من النوع الطويل. كيفية استخدامه على النحو التالي:
Long L = System.CurrentTimeMillis () ؛
للحصول على عدد صحيح من النوع int ، ما عليك سوى تحويل النتيجة أعلاه إلى النوع int. على سبيل المثال ، احصل على عدد صحيح int بين [0 ، 100). الطريقة كما يلي:
Final Long l = system.currentTimeMillis () ؛ Final int i = (int) (l ٪ 100) ؛
تستخدم الطريقة الثانية Math.Random () للحصول على أرقام عشوائية
احصل على أرقام عشوائية من خلال Math.Random (). في الواقع ، فإنه يعيد قيمة مزدوجة بين 0 (شامل) و 1 (غير مدرج). كيفية استخدامه على النحو التالي:
نهائي d = math.random () ؛
للحصول على عدد صحيح من النوع int ، ما عليك سوى تحويل النتيجة أعلاه إلى النوع int. على سبيل المثال ، احصل على عدد صحيح int بين [0 ، 100). الطريقة كما يلي:
نهائي d = math.random () ؛ نهائي int i = (int) (d*100) ؛
يستخدم النوع الثالث فئة عشوائية للحصول على أرقام عشوائية
احصل على أرقام عشوائية من خلال الفئة العشوائية.
كيفية استخدامه على النحو التالي:
(01) إنشاء كائن عشوائي. هناك طريقتان لإنشاء كائن عشوائي ، على النحو التالي:
عشوائي عشوائي = جديد عشوائي () ؛ // مُنشئ الافتراض عشوائي = جديد عشوائي (1000) ؛ // حدد رقم البذور
(02) احصل على أرقام عشوائية من خلال كائنات عشوائية. يدعم عشوائي أنواع القيمة العشوائية: منطقية ، بايت ، int ، طويلة ، تعويم ، مزدوجة.
على سبيل المثال ، احصل على عدد صحيح int بين [0 ، 100). الطريقة كما يلي:
int i2 = random.nextint (100) ؛
واجهة وظيفة عشوائي
// مُنشئ (i): إنشاء مولد أرقام عشوائية جديدة. Random () // constructor (II): إنشاء مولد رقم عشوائي جديد باستخدام بذرة طويلة واحدة: عشوائي عام (بذرة طويلة) {setSeed (البذور) ؛ } الطريقة التالية تستخدمها لحفظ حالة مولد الأرقام العشوائية. عشوائي (بذرة طويلة) منطقية NextBoolean () // إرجاع رقم "النوع المنطقي" التالي "العشوائي الزائف. void nextbytes (byte [] buf) // قم بإنشاء بايت عشوائي ووضعها في بايت صفيف buf. مزدوج NextDouble () // إرجاع عدد عشوائي من "النوع المزدوج بين [0.0 ، 1.0)". Float nextfloat () // إرجاع عدد عشوائي من "نوع التعويم بين [0.0 ، 1.0)". int nextint () // إرجاع الرقم العشوائي "int type" التالي. int nextint (int n) // إرجاع عدد عشوائي من "النوع int بين [0 ، n)". Long Nextlong () // إرجاع الرقم العشوائي "النوع الطويل" التالي. يُعيد مزدوج NextGaussian المزدوج () // إرجاع الرقم العشوائي "المزدوج" التالي ، وهو قيمة مزدوجة في توزيع غاوسي ("عادة") ، بمتوسط قيمة 0.0 وانحراف معياري قدره 1.0. setseed void setseed (البذور الطويلة) // اضبط بذرة مولد الأرقام العشوائية باستخدام بذرة طويلة واحدة.احصل على مثال رقم عشوائي
EG1:
فيما يلي مثال لإظهار الطرق الثلاث المذكورة أعلاه للحصول على أرقام عشوائية. رمز المصدر هو كما يلي (RandomTest.java):
استيراد java.util.random ؛ استيراد java.lang.math ؛/*** برنامج اختبار الرقم العشوائي Java. هناك 3 طرق للحصول على أرقام عشوائية: * (01) ، استخدم System.CurrentTimeMillis () للحصول على عدد طويل من المللي ثانية في الوقت الحالي. * (02) ، إرجاع قيمة مزدوجة بين 0 و 1 من خلال Math.Random (). * (03) إنشاء رقم عشوائي من خلال الفئة العشوائية. هذا هو فئة الأدوات العشوائية المهنية مع وظائف قوية. * * Author Skywang * @email [email protected] */الفئة العامة العشوائية {public static void main (String args []) {// إرجاع الرقم العشوائي testsystemtimeMillis () من خلال CurrentTimeMillis () ؛) ؛ // إرجاع الرقم العشوائي testMathRandom () من خلال Math's Random () ؛ // قم بإنشاء كائن عشوائي جديد مع "بذرة 1000" واختبار واجهة برمجة تطبيقات عشوائية من خلال هذا اختبار البذور (New Random (1000) ، "1st Random (1000)") ؛ TestRandomapis (New Random (1000) ، "2nd Random (1000)") ؛ // قم بإنشاء كائن عشوائي "بذرة افتراضية" واختبار API Random من خلال هذا اختبار البذور (New Random () ، "1st Random ()") ؛ TestRandomapis (new Random () ، "2nd Random ()") ؛ } / ** * إرجاع رقم عشوائي -01: CurrentTimEmillis لنظام الاختبار () * / private static void testsystemtimeMillis () {// final long l = system.currentTimeMillis () ؛ // احصل على [0 ، integer final int i = (int) (l ٪ 100) ؛ system.out.printf ("/n ---- system.currentTimeMillis () ---/nl = ٪ si = ٪ s/n" ، l ، i) ؛ } / ** * إرجاع رقم عشوائي-02: اختبار Math's Random () * / private static void testmathrandom () {// إرجاع رقم عشوائي من النوع المزدوج من خلال وظيفة Math's Random () ، المدى [0.0 ، 1.0) Double D = Math.Random () ؛ // احصل على عدد صحيح بين [0 ، 100) int i = (int) (d*100) ؛ system.out.printf ("/n ----- Math.Random () ---/nd = ٪ si = ٪ s/n" ، d ، i) ؛ } / ** * إرجاع رقم عشوائي رقم 03: اختبار Random's API * / private static void testrandomapis (عشوائي عشوائي ، عنوان السلسلة) {Final int buffer_len = 5 ؛ // الحصول على قيمة منطقية عشوائية Boolean B = Random.NextBoolean () ؛ // احصل على صفيف عشوائي buf [] byte [] buf = new byte [buffer_len] ؛ Random.NextBytes (BUF) ؛ // احصل على قيمة مزدوجة عشوائية ، نطاق [0.0 ، 1.0) double d = random.nextDouble () ؛ // احصل على قيمة عائمة عشوائية ، المدى [0.0 ، 1.0) float f = random.nextfloat () ؛ // احصل على قيمة عشوائية int INT I1 = Random.NextInt () ؛ // احصل على قيمة عشوائية int بين [0،100) int i2 = random.nextint (100) ؛ // احصل على توزيع غاوسي عشوائي مزدوج g = random.nextgaussian () ؛ // احصل على قيمة طويلة عشوائية طويلة l = random.nextlong () ؛ System.out.printf ("/n --- ٪ s ----/nb = ٪ s ، d = ٪ s ، f = ٪ s ، i1 = ٪ s ، i2 = ٪ s ، g = ٪ s ، l = ٪ s ، buf = [" ، title ، b ، d ، f ، i2 ، i2 ، g ، l) ؛ لـ (byte bt: buf) system.out.printf ("٪ s ،" ، bt) ؛ System.out.println ("]") ؛ }}
EG2:
المشكلة: إنشاء أرقام عشوائية بين (-10،10) مع الاحتفاظ برقمين بعد النقطة العشرية.
حل:
1. R.NextFloat () ؛ // إنشاء أرقام عشوائية نقطة عائمة بين (0،1). اضرب الرقم العشوائي أعلاه بمقدار 10 للحصول على رقم عشوائي بين (0،10).
2. إنشاء رقم عشوائي من النوع المنطقي للتحكم في الإيجابية والسلبية للرقم: R.NextBoolean () ؛
3. طريقة الاحتفاظ بمكانين عشريين: Math.Floor (n*100+0.5)/100 ؛ الرقم الذي تم الحصول عليه هو نوع مزدوج.
الرمز كما يلي:
استيراد java.util.*؛ الفئة العامة createrandom {public float numRandom () {float num ؛ عشوائي R = جديد عشوائي () ؛ قيمة التعويم = (تعويم) (Math.Floor (R.NextFloat ()*1000+0.5)/100) ؛ Boolean B = R.NextBoolean () ؛ إذا (ب) {num = value ؛ } آخر {num = 0-value ؛ } إرجاع num ؛ } public static void main (string [] args) {createrandom cr = new createrandom () ؛ float num = cr.numrandom () ؛ system.out.print (num) ؛ }}