मैं वर्तमान में एक ऐसे प्रोग्राम पर काम कर रहा हूं, जिसमें एक पिक्सेल के 'निर्देशांक' के आधार पर स्क्रीन पर रैंडम शोर उत्पन्न करना चाहिए। जब भी आप प्रोग्राम को पुनरारंभ करते हैं, तो निर्देशांक में एक ही रंग होना चाहिए। हालांकि, जावा के उपयोग का उपयोग करते हुए। आयामी, मुझे मिलने वाले परिणाम उतने यादृच्छिक नहीं हैं जितना मैं चाहूंगा:
मैंने सोचा था कि यदि मैं संयुक्त निर्देशांक (जैसे कि प्रत्येक निर्देशांक से प्रत्येक निर्देशांक के बाद बने एक पूर्णांक में) का उपयोग किया है, तो प्रत्येक समन्वय की एक अलग संख्या होगी। एक बीज के रूप में उस संख्या का उपयोग करके मुझे उस समन्वय के आरजीबी मूल्य के लिए उपयोग करने के लिए प्रत्येक समन्वय के लिए एक अलग यादृच्छिक संख्या प्राप्त करने की उम्मीद थी।
यह वह कोड है जिसका मैंने उपयोग किया है:
public class Generate {
static Random Random;
public static int TileColor(int x, int y){
Random = new Random(Integer.valueOf(Integer.toString(x)+Integer.toString(y)));
int b = 1 + Random.nextInt(50);
int g = 1 + Random.nextInt(50);
int r = 1 + Random.nextInt(50);
int color = -Color.rgb888(r, g, b);
return color;
}
}
जिस तरह से जावा का रैंडम फ़ंक्शन काम करता है या क्या मैं कुछ गलत कर रहा हूं और क्या मुझे एक अलग दृष्टिकोण की कोशिश करनी चाहिए, के कारण यह पैटर्न बनता है?
अद्यतन: मैंने अब निम्नलिखित कोड का उपयोग करके समवर्ती आसपास की समस्याओं से छुटकारा पाने की कोशिश की:
public static int TileColor(int x, int y){
Randomy = new Random(y);
Randomx = new Random(x);
Random = new Random(Integer.valueOf(Integer.toString(Randomx.nextInt(1234))+Integer.toString(Randomy.nextInt(1234))));
int b = 1 + Random.nextInt(100);
int g = 1 + Random.nextInt(100);
int r = 1 + Random.nextInt(100);
int color = -Color.rgb888(r, g, b);
return color;
}
किसी तरह, इसने एक (मेरी राय में) पर्याप्त रूप से यादृच्छिक छवि प्रदान की:
हालाँकि यह कोड प्रति पिक्सेल तीन गुना अधिक है। भले ही यह अभी मेरे लिए कोई समस्या नहीं है, लेकिन मैं इस कोड को बदलने के बारे में सोचता हूं कि मुझे बाद में बेहतर सुधार की आवश्यकता है।