Avatar ·

لماذا يطبع الكود الذي يحتوي على سلاسل عشوائية "hello world"؟

مرحباً بالجميع! أنا مبتدئ في Java وقد صادفت سلوكاً غريباً. كتبت هذا الكود: ```java Random random = new Random(-229985452); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 5; i++) { sb.append((char) ('a' + random.nextInt(26))); } System.out.println(sb.toString()); // يطبع "hello" Random random2 = new Random(-147909649); StringBuilder sb2 = new StringBuilder(); for (int i = 0; i < 5; i++) { sb2.append((char) ('a' + random2.nextInt(26))); } System.out.println(sb2.toString()); // يطبع "world" ``` كنت أتوقع أن يطبع الكود سلاسل عشوائية في كل تشغيل. لكن هذا الكود يطبع باستمرار "hello" و "world" على أجهزة مختلفة. لماذا يحدث هذا؟ هل هو سحر أم ميزة في Java؟ لقد أعدت تشغيل البرنامج عدة مرات والنتيجة دائماً واحدة. أرجو شرح كيفية عمل ذلك. شكراً مسبقاً! <<>>

إجابة مختصرة: seed (بذرة) مولد الأرقام العشوائية

فئة java.util.Random تستخدم seed لتوليد الأرقام العشوائية. إذا تم استخدام نفس الـ seed، فسيتم إنتاج نفس التسلسل من الأرقام العشوائية في كل مرة. هنا، الـ seed -229985452 ينتج تسلسلاً يطبع "hello"، والـ seed -147909649 ينتج تسلسلاً يطبع "world". هذا ليس سحراً، بل هو سلوك محدد ومتوقع في Java.