لماذا تطبع الشيفرة التي تولد سلاسل عشوائية دائمًا "hello world"؟
مرحبًا بالجميع! أنا مطور Java مبتدئ واجهت سلوكًا غريبًا جدًا. كتبت برنامجًا بسيطًا يولد سلسلة نصية عشوائية ويتحقق مما إذا كانت تساوي "hello world". إذا كانت متساوية — يطبع رسالة. لكن البرنامج يطبع دائمًا "hello world"، على الرغم من أنني توقعت أن تكون هذه حالة نادرة.
إليك الشيفرة:
```java
import java.util.Random;
public class StrangeHelloWorld {
public static void main(String[] args) {
Random random = new Random();
String target = "hello world";
while (true) {
String randomString = generateRandomString(random, target.length());
if (randomString.equals(target)) {
System.out.println("hello world");
break;
}
}
}
static String generateRandomString(Random random, int length) {
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
char c = (char) (ran