2011-11-23 18 views
7

हम जावा में बहुत बड़ी यादृच्छिक संख्या कैसे उत्पन्न कर सकते हैं? मैं कुछ 10000 अंकों की तरह बात कर रहा हूँ? मुझे पता है कि हमें बिगइंटर का उपयोग करना है लेकिन हम यह कैसे कर सकते हैं? ऐसा कुछ करने का सबसे प्रभावशाली तरीका क्या है? कृपया एक छोटा सा उदाहरण प्रदान करें। धन्यवाद।बहुत बड़ी यादृच्छिक संख्याएं उत्पन्न करना जावा

उत्तर

17

ठीक है, एक तरह से Random.org के पास जाकर द्विआधारी यादृच्छिक फ़ाइलों की एक एक डाउनलोड करने के लिए है। फाइलें वायुमंडलीय शोर से उत्पन्न होती हैं, इसलिए यह बहुत यादृच्छिक है। मैंने इसे अपने शतरंज इंजन में ज़ोब्रिस्ट चाबियों के लिए इस्तेमाल किया।

वैकल्पिक रूप से आप जा सकते हैं

BigInteger b = new BigInteger(256, new Random()); 

जो आप दे देंगे आप क्या चाहते हैं। इस उदाहरण में, बिगइंटर में 256 बिट्स शामिल हैं।

+1

+1। दस्तावेज में चार रचनाकार नीचे थे, मैंने इसे नहीं देखा: डी। – Vlad

+0

हममें से सर्वश्रेष्ठ के लिए होता है! –

7

Random.nextBytes(byte[])BigInteger(byte[]) के साथ संयोजित करें।

import java.util.*; 
import java.math.*; 
class Test{ 
    public static void main(String[]_){ 

     int n = 16; 

     Random r = new Random(); 
     byte[] b = new byte[n]; 
     r.nextBytes(b); 
     BigInteger i = new BigInteger(b); 

     System.out.println(i); 
    } 
} 
+1

+1: संभवतः अंकों की एक विशिष्ट संख्या प्राप्त करने के लिए mod() का उपयोग करें। –

+0

क्या आप कृपया बता सकते हैं कि यह कैसे काम करता है? मैं बाइट्स भाग पर कम या ज्यादा उलझन में हूं .. धन्यवाद –

+0

आप बाइट्स की एक सरणी आवंटित करते हैं, अगली बाइट्स इसे यादृच्छिक मानों से भरती है, और फिर बिगइंटर को बाइट्स के उस अनुक्रम द्वारा परिभाषित बाइनरी संख्या के रूप में प्रारंभ किया जाता है। लेकिन मुझे लगता है कि जैको का समाधान अधिक संक्षिप्त है। – Vlad

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^