for - java jdk



20 अक्षरों की एक यादृच्छिक स्ट्रिंग कैसे उत्पन्न करें (3)

इस सवाल का पहले से ही यहाँ एक जवाब है:

संभव डुप्लिकेट:
जावा में एक यादृच्छिक स्ट्रिंग कैसे उत्पन्न करें

मैं अपाचे कक्षाओं का उपयोग किए बिना 20 अक्षरों का एक यादृच्छिक स्ट्रिंग उत्पन्न करना चाहता हूं। मुझे इस बात की कोई परवाह नहीं है कि अल्फ़ान्यूमेरिक है या नहीं। इसके अलावा, मैं इसे बाद में FYI करने के लिए बाइट्स की एक सरणी में बदलने जा रहा हूं।

धन्यवाद,


Answer #1

आप विधि के साथ वर्ग java.util.Random का उपयोग कर सकते हैं

char c = (char)(rnd.nextInt(128-32))+32 

20x बाइट्स प्राप्त करने के लिए, जिसे आप ASCII के रूप में व्याख्या करते हैं। यदि आप ASCII के साथ ठीक हैं।

32 ऑफसेट है, जहां से अक्षर सामान्य रूप से प्रिंट करने योग्य हैं।


Answer #2

मैं इस दृष्टिकोण का उपयोग करेगा:

String randomString(final int length) {
    Random r = new Random(); // perhaps make it a class variable so you don't make a new one every time
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < length; i++) {
        char c = (char)(r.nextInt((int)(Character.MAX_VALUE)));
        sb.append(c);
    }
    return sb.toString();
}

यदि आप एक बाइट चाहते हैं [] तो आप यह कर सकते हैं:

byte[] randomByteString(final int length) {
    Random r = new Random();
    byte[] result = new byte[length];
    for(int i = 0; i < length; i++) {
        result[i] = r.nextByte();
    }
    return result;
}

या आप ऐसा कर सकते थे

byte[] randomByteString(final int length) {
    Random r = new Random();
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < length; i++) {
        char c = (char)(r.nextInt((int)(Character.MAX_VALUE)));
        sb.append(c);
    }
    return sb.toString().getBytes();
}

Answer #3
public String randomString(String chars, int length) {
  Random rand = new Random();
  StringBuilder buf = new StringBuilder();
  for (int i=0; i<length; i++) {
    buf.append(chars.charAt(rand.nextInt(chars.length())));
  }
  return buf.toString();
}





java