मैं जावा में यादृच्छिक संख्याएं उत्पन्न करना चाहता हूं, मुझे पता है कि मुझे Math.random() जैसे मौजूदा तरीकों का उपयोग करना चाहिए, हालांकि, मेरा प्रश्न है: मैं संख्याओं का एक ही अनुक्रम कैसे उत्पन्न कर सकता हूं, हर बार जब मैं अपना आवेदन चलाता हूं? उदाहरण: उत्पन्न अनुक्रम है: 0.9, 0.08,0.6 तो मैं चाहता हूँ कि इस अनुक्रम हर बार जब मैं इस विधि पर अमल उत्पन्न हो जाएगा ..यादृच्छिक संख्याओं के समान अनुक्रम का जनरेशन
उत्तर
ज़रूर - बस बजाय Math.random()
का उपयोग करने का Random
का एक उदाहरण बनाने के लिए, और हमेशा एक ही बीज निर्दिष्ट करें:
Random random = new Random(10000); // Or whatever seed - maybe configurable
int diceRoll = random.nextInt(6) + 1; // etc
ध्यान दें कि यदि आपके एप्लिकेशन में एकाधिक धागे शामिल हैं, तो यह कठिन हो जाता है, क्योंकि समय कम अनुमानित हो जाता है।
यह Random
का लाभ लेता जा रहा है एक pseudo-random number generator - दूसरे शब्दों में, हर बार जब आप इसे एक नए परिणाम के लिए पूछना है, यह आंतरिक स्थिति manipulates आप एक यादृच्छिक दिखने अनुक्रम देने के लिए है, लेकिन मौजूदा आंतरिक बीज जानते हुए भी (या वास्तव में राज्य) यह पूरी तरह से अनुमानित है।
आपको यादृच्छिक संख्या जनरेटर को बीज करने की आवश्यकता है।
Random random = new Random(aFixedNumber);
random.nextInt(); // will always be the same
बार-बार उसी बीज का उपयोग करने का एक उदाहरण।
public static void main(String... args) throws IOException {
printDoublesForSeed(1);
printDoublesForSeed(128);
printDoublesForSeed(1);
printDoublesForSeed(128);
}
private static void printDoublesForSeed(long seed) {
double[] doubles = new double[10];
Random rand = new Random(seed);
for (int j = 0; j < doubles.length; j++) {
doubles[j] = (long) (rand.nextDouble() * 100)/100.0;
}
System.out.println("doubles with seed " + seed + " " + Arrays.toString(doubles));
}
प्रिंट
doubles with seed 1 [0.73, 0.41, 0.2, 0.33, 0.96, 0.0, 0.96, 0.93, 0.94, 0.93]
doubles with seed 128 [0.74, 0.53, 0.63, 0.41, 0.21, 0.2, 0.33, 0.74, 0.17, 0.47]
doubles with seed 1 [0.73, 0.41, 0.2, 0.33, 0.96, 0.0, 0.96, 0.93, 0.94, 0.93]
doubles with seed 128 [0.74, 0.53, 0.63, 0.41, 0.21, 0.2, 0.33, 0.74, 0.17, 0.47]
संपादित करें यादृच्छिक बीज का एक दिलचस्प दुरुपयोग।
public static void main(String ... args) {
System.out.println(randomString(-6225973)+' '+randomString(1598025));
}
public static String randomString(int seed) {
Random rand = new Random(seed);
StringBuilder sb = new StringBuilder();
for(int i=0;i<5;i++)
sb.append((char) ('a' + rand.nextInt(26)));
return sb.toString();
}
प्रिंट
hello world
+1। – mre
मुझे हैलो वर्ल्ड उदाहरण पसंद है। मुझे लगता है कि कोई बेहतर समाधान नहीं है जो सभी संभावित बीजों को सही लोगों को खोजने के लिए मजबूर करता है? संपादित करें: दोहा जाहिर है, मुझे अपनी पहली कॉफी प्राप्त करने से पहले चीजें नहीं लिखनी चाहिए: o – Voo
मैंने अभी ब्रूट फोर्स का उपयोग किया था। ;) –
Math.random
सिर्फ वर्ग java.util.Random
का एक आवरण है। पहली बार जब आप Math.random
पर कॉल करते हैं तो कक्षा java.util.Random
का एक उदाहरण बनाया गया है।
अब, अधिकांश एपीआई किसी भी सच यादृच्छिक संख्या जेनरेटर का पर्दाफाश नहीं करते हैं, क्योंकि उन्हें सॉफ़्टवेयर में लागू नहीं किया जा सकता है। इसके बजाय, वे छद्म-यादृच्छिक संख्या जनरेटर का उपयोग करते हैं, जो सूत्रों के समूह का उपयोग करके यादृच्छिक दिखने वाले संख्याओं का अनुक्रम उत्पन्न करते हैं। यह java.util.Random
करता है। हालांकि, प्रत्येक छद्म-यादृच्छिक संख्या जनरेटर को बीज पहले होना चाहिए। यदि आपके पास दो छद्म-यादृच्छिक संख्या जेनरेटर हैं जो समान एल्गोरिदम का उपयोग करते हैं और उसी बीज का उपयोग करते हैं, तो वे एक ही आउटपुट का उत्पादन करेंगे।
डिफ़ॉल्ट रूप से, java.util.Random
1 जनवरी 1 9 70 से बीज के रूप में मिलीसेकंड का उपयोग करता है। इसलिए, हर बार जब आप अपना प्रोग्राम शुरू करते हैं, तो यह अलग-अलग संख्याओं का उत्पादन करेगा (जब तक कि आप इसे 1 मिलीसेकंड के तहत जावा शुरू करने के लिए प्रबंधित न करें)। ,
import java.util.Random;
class ... {
Random randomNumberGenerator = new Random(199711);
public void ...()
{
int randomInt = randomNumberGenerator.nextInt();
double randomDouble = randomNumberGenerator.nextDouble();
}
}
randomNumberGenerator
हमेशा नंबर की उसी क्रम थूक से बाहर होगा जब तक आप बीज परिवर्तन नहीं करते के रूप में (: तो, आपकी समस्या का हल खुद के द्वारा अपने स्वयं के java.util.Random
उदाहरण बना सकते हैं और यह बीज के लिए है 199711
)।
मैं ऐप में संख्याओं को हार्डकोड करता हूं। यह अधिक स्मृति लेता है लेकिन बहुत तेज़ है।
बस टर्मिनल पर यादृच्छिक संख्या प्रिंट करें, फिर उन्हें अपने कोड पर कॉपी-पेस्ट करें।
आपके द्वारा किए गए कार्यों को समझाते हुए एक टिप्पणी छोड़ना सुनिश्चित करें, या वे अनजान पाठक के लिए काले जादू की तरह दिखेगा।
- 1. एक यादृच्छिक अनुक्रम का सबसेट भी यादृच्छिक है?
- 2. सी ++ 11 मानक गारंटी के समान बीज के लिए समान यादृच्छिक संख्या गारंटी देता है?
- 3. रैंड() प्रत्येक रन पर संख्याओं का समान अनुक्रम क्यों उत्पन्न करता है?
- 4. छद्म-यादृच्छिक बाइनरी अनुक्रम भविष्यवाणी
- 5. "चिकनी" यादृच्छिक संख्याओं के लिए एल्गोरिदम
- 6. संख्याओं के अनुक्रम को यादृच्छिक दिखने वाले आईडी में कनवर्ट करें?
- 7. समान रूप से वितरित यादृच्छिक संख्या पीढ़ी
- 8. पुनरावर्तनीय यादृच्छिक संख्या अनुक्रम कैसे उत्पन्न करें?
- 9. जावा छद्म-यादृच्छिक संख्याओं की प्रणालियों और संस्करणों में पुनरुत्पादन?
- 10. एक समान यादृच्छिक संख्या जनरेटर
- 11. यादृच्छिक संख्याओं की सूची कैसे उत्पन्न करें?
- 12. मजबूत रैंडम नंबर जनरेशन
- 13. जावा - 6 यादृच्छिक संख्याओं के लिए स्ट्रिंग को कैसे खोजें
- 14. सुरक्षित रूप से एक समान यादृच्छिक BigInteger
- 15. अनुक्रम लंबाई के समान होने पर कौन सा अपवाद
- 16. f # कुल रनिंग का अनुक्रम
- 17. वितरित रैंडम नंबर जनरेशन
- 18. यादृच्छिक नहीं है कि यादृच्छिक
- 19. आईओएस और एंड्रॉइड के सामान्य यादृच्छिक संख्या जनरेटर
- 20. जावास्क्रिप्ट का उपयोग करके यादृच्छिक रूप से दो संख्याओं के बीच निर्णय कैसे लें?
- 21. जावास्क्रिप्ट में बुराई के लिए तिथियों और यादृच्छिक संख्याओं का उपयोग कैसे किया जा सकता है?
- 22. यादृच्छिक संख्या
- 23. एक धारावाहिक वर्ग में रैंडम का उदाहरण बार-बार संख्याओं के समान सेट का उत्पादन क्यों करता है?
- 24. यादृच्छिक संख्या पुस्तकालय को बढ़ावा देने, विभिन्न variate जनरेटर के लिए एक ही यादृच्छिक संख्या जनरेटर का उपयोग
- 25. PHP में प्राकृतिक भाषा जनरेशन
- 26. डेटा का यादृच्छिक वितरण
- 27. सभी संख्याओं का योग
- 28. दो संख्याओं का गुणा
- 29. बड़ी संख्याओं का डिवीजन
- 30. अनुक्रम का स्वचालित गणना
धागे के मामले में आप प्रत्येक थ्रेड को अपने स्वयं के यादृच्छिक (निश्चित बीज के साथ) दे सकते हैं या यदि आप केवल कुछ संख्याओं को एक यादृच्छिक (निश्चित बीज के साथ) के लिए पूर्व जनसंख्या सूची का उपयोग करते हैं। हालांकि अगर धागे एक दूसरे के साथ बातचीत करते हैं तो यह दृष्टिकोण अब और काम नहीं करेगा। स्पष्ट चित्रण के लिए – Stefan