ランダム文字列生成アルゴリズム

3565 ワード

IOSアルゴリズム:char data[NUMBER_OF_CHARS];      for ( int x=0;x<NUMBER_OF_CHARS;data[x++] = ( char )( 'A' + (arc4random_uniform(26))));      return [[NSString alloc] initWithBytes:data length:NUMBER_OF_CHARS encoding:NSUTF8StringEncoding];
 
JAVA実現:
 
1つの文字セットを与え、ランダムに生成された文字列の長さを与え、ランダムに文字列を生成することができる.
例えば{'a','......,'z'}および長さ5では、長さ5の文字列がランダムに生成される.
 
[java] 
view plain
copy
 
package xiazdong.util;  
  •   

  • import java.util.Random;  
  •   

  • /*与えられたcharセットに基づいてランダムな文字列*/を生成する
  • public class StringWidthWeightRandom {  

  •     private Random widthRandom = new Random();  
  •     private int length;  

  •     private char[] chars;  
  •     private Random random = new Random();  

  •     public StringWidthWeightRandom(char[] chars) {  
  •         this.chars = chars;  

  •     }  
  •       

  • //パラメータは生成された文字列の長さであり、所与のchar集合に基づいて文字列を生成する
  •     public String getNextString(int length){      

  •           
  •         char[] data = new char[length];  

  •           
  •         for(int i = 0;i < length;i++){  

  •             int index = random.nextInt(chars.length);  
  •             data[i] = chars[index];  

  •         }  
  •         String s = new String(data);  

  •         return s;  
  •     }  

  •       
  •   

  • }  
    テストコード:
    [java] 
    view plain
    copy
     
    package test.com.sap.prd.util;  
  •   

  • import junit.framework.TestCase;  
  •   

  • import org.junit.Test;  
  •   

  • import com.sap.prd.util.StringWidthWeightRandom;  
  •   

  • public class StringWidthWeightRandomTest extends TestCase {  
  •   

  •     @Test  
  •     public void testGetNextString()throws Exception{  

  •         StringWidthWeightRandom random = new StringWidthWeightRandom(new char[]{'A','B','C','D','E','F','G'});  
  •           

  •         for(int i=1;i<10;i++){  
  •             System.out.println(random.getNextString(i));  

  •         }  
  •     }  

  • }  
    結果:
    [java] 
    view plain
    copy
     
    F  
  • CC  

  • EGE  
  • CADA  

  • CFBFC  
  • DBBCFE  

  • BFEADFA  
  • FDEEDACE  

  • EEFFGFBEG