2010-03-19 81 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; 
    } 
} 

瞭解更多,學習正則表達式。