6 文字の生成: 最初の文字は、アルファベット リスト (A、C、E、…、Y) の順序が奇数のアルファベットからランダムに生成されます。2 番目の文字は、アルファベット リストの順序が偶数のアルファベット (B、…、Y) からランダムに生成されます。 D、F、…、Z) 3 番目の文字はアルファベット リスト (A ~ Z) からランダムに生成されます。3 桁の数字はそれぞれ 1 ~ 9 からランダムに生成されます。
10 に答える
これは宿題ですか?その場合は、質問に適切なタグを付けてください。
ここに手がかりがあります。文字と数字はすべて文字であり、配列に格納できます。
これが宿題であるかどうかはわかりません (そのように見えます)。そのため、考えられるアプローチの正しい方向を示します。
- ランダムな整数は、他の 2 つの指定された整数 Y と Z の間の任意の整数 X になる可能性があることを思い出してください。
- 乱数からランダムな文字にどのように移行できますか?
- 0 から 13 までの乱数を取り、それを 0 から 26 までの偶数に変えるにはどうすればよいでしょうか? 奇数?
- この質問に答えるために、これらのアイデア/概念をどのように活用できますか?
Java では、char 演算を実行できます。そう
'A' + RNG.nextInt(26);
RNG
は のインスタンスである「A」と「Z」の間のランダムな文字を返しますjava.util.Random
。
ストリングを効率的に構築するには。使うStringBuilder
私の図書館のドルを使うのは簡単です:
@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));
}
3つのランダムな文字とそれに続く3つの乱数を含む6つのランダムな文字を生成したいのですが、一度に生成できるのは文字または数字のみです。
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;
xegerとbrics 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;
}
}
もっと理解するには、正規表現を学んでください。
乱数生成関数を使用して範囲 [0,26) の数値を生成し、それに (int)'a' の値を追加して、結果を char にキャストします。
RandomStringUtils、または少なくともそのソースコードを見ることができます。
0 から 61 までの数字のセット (上下に 61 文字と数字があります) を生成し、それぞれを [0-9a-zA-Z] のいずれかにマップしてから、全体を連結します。
使用できる基本的なもの:
- アルファベット 26 文字すべての配列と、
- 乱数ジェネレーターの 1 つまたは 2 つのインスタンス。