2010-03-19 51 views
3

生成6个字符:第一个字符被随机地从与字母表中的列表奇数排序(A,C,E,...,y)是随机地从与所述字母表中产生的第二个字符的字母产生的甚至在字母表排序列表(B,d,F,...,Z)的第三字符被随机地从字母列表(A至Z)产生每一个三位数字的是随机的从1产生的9.生成随机字母和数字一起

+1

所以你的意思是'abc123',或者它也可以是'a1b2c3'? – Bozho 2010-03-19 15:02:07

+0

以下是完整的问题。生成6个字符: 第一个字符是从字母表中的奇数排序(A,C,E,...,Y)中随机生成的第一个字符 第二个字符是从字母中随机生成的,偶数排序在字母表中列表(B,D,F,...,Z) 第三个字符从字母表中随机生成(A到Z) 三个数字中的每一个都是随机从1到9生成的。 – 2010-03-19 15:18:38

+0

请提供样例输出。应该生成什么字符串,以及不应该生成什么字符串? – fredoverflow 2010-03-19 15:31:00

回答

3

是这家庭作业?如果是这样,请适当标记您的问题。

这里是一个线索:字母和数字的所有字符,你可以在一个阵列存储。

0

使用随机发生器函数生成在范围[0,26的数字),并加入(INT的值)“a”到这一点,把结果回CHAR

0

生成一组数字在0 - 61之间(上下有61个字母,加上数字),并将它们映射到[0-9a-zA-Z]之一,然后将整个事件连接在一起。

0

一些基本的东西,你可以使用:

  • 字母表中的所有26个字符的阵列,并且,
  • 1或2所述的随机数生成器的实例。
1

在java中,你可以做字符运算。所以

'A' + RNG.nextInt(26); 

将返回 'A' 和 'Z',其中RNGjava.util.Random一个实例之间的随机字母。

要有效地建立的字符串。用我的图书馆dollar使用StringBuilder

1

很简单:

@Test 
public void generateRandomString() { 
    String string = $('a', 'z').shuffle().slice(3).join() + // take 3 random letters 
        $('0', '9').shuffle().slice(3).join(); // take 3 random digits 
    assertThat(string.length(), is(6)); 
} 
+1

说实话,这看起来比没有你的图书馆的好解决方案更复杂。顺便提一下,Java已经有了'assert'。 – Cam 2010-03-19 15:45:33

+0

这是一个使用hamcrest的JUnit测试,断言在这里不会帮助你... – dfa 2010-03-19 18:01:53

0

我想生成6个随机字符,其中包括3个随机字母后跟3个随机数字,但我只能产生在一个唯一的字母或数字时间。

char a = randomLetter(); 
char b = randomLetter(); 
char c = randomLetter(); 

int x = randomNumber(); 
int y = randomNumber(); 
int z = randomNumber(); 

String result = new String()+a+b+c+x+y+z; 
1

不知道这是功课(它看起来是),所以我会尽力给你指出一个可能的方法正确的方向:

  • 回想一下,随机整数可以是 其他两个 之间的任何整数X指定整数Y和Z.
  • 如何从随机数到随机CHARACTER?
  • 你怎么能在0与13之间的随机数,并把它转换成一个甚至为0和26之间的号码吗?一个奇数?
  • 你如何利用这些想法/概念来回答这个问题?
0

试用xegerbrics automaton

import nl.flotsam.xeger.Xeger; 
import dk.brics.automaton.Automaton; 

public class RandomizeString{ 
    public String generateRandomString(){ 
     String regex = "[ACEGIKMOQSUWY][BDFHJLNPRTVXZ][A-Z][0-9]{3}"; 
     Xeger generator = new Xeger(regex); 
     String result = generator.generate(); 
     return result; 
    } 
} 

了解更多,学习正则表达式。