如何在java中随机选择7个字母(a到z)

时间:2015-08-17 05:48:40

标签: java random

我想从a到z选择7个随机字母

到目前为止,我只找到了选择单个字母https://stackoverflow.com/a/5202888/3209901

的方法
Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');

为什么七个字母,因为我需要对这七个字母应用一些条件 - 检查这七个字母形成的字词,字长应至少为4个字母......

5 个答案:

答案 0 :(得分:3)

这是Java-8解决方案:

new Random().ints('a', 'z'+1).distinct()
            .limit(7).forEach(ch -> System.out.println((char)ch));

答案 1 :(得分:0)

试试这个

Random rnd = new Random();
final String AB = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
StringBuilder alphabat = new StringBuilder();
for (int i = 0; i < 4; i++){
   alphabat.append(AB.charAt(rnd.nextInt(AB.length())));
}
System.out.println(alphabat.toString());

答案 2 :(得分:0)

此解决方案不需要循环,也不需要随机生成器。它产生一个带有7个随机字母的List<String>

    String[] abArr = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
    List<String> abList = Arrays.asList(abArr);
    Collections.shuffle(abList);
    System.out.println(abList.subList(0, 7));

答案 3 :(得分:0)

您可以使用Set,因为它不存储任何重复的元素,因此更容易实现。

 Random r = new Random();
 Set <Character>mySet=new <Character>HashSet();
 while(mySet.size()!=7){
 char c = (char) (r.nextInt(26) + 'a');
 mySet.add(c);
 }

 for(char c:mySet){
     System.out.print(c+" ");
 }

Output:a q d g i j m

答案 4 :(得分:0)

现在,根据你最终想要实现的目标,你可以简单地做一些像......

Random rnd = new Random();
for (int index = 0; index < 7; index++) {
    System.out.println((char)(rnd.nextInt(26) + 'a'));
}

这将生成7个随机字符。您可以将这些添加到数组ListStringBuilder。您还可以使用rnd.nextInt(3) + 4)生成随机字长。

现在,如果您不想要重复值,可以使用Set,例如......

Random rnd = new Random();
Set<Character> characters = new HashSet<>();
while (characters.size() < 7) {
    characters.add((char)(rnd.nextInt(26) + 'a'));
}

for (Character value : characters) {
    System.out.println(value);
}

哪个会一直循环,直到Set包含所需的字符数(在此7中,但请参阅上一条评论以生成随机长度)

你也可以做点像......

List<String> values = new ArrayList<>(Arrays.asList("abcdefghijklmnopqrstuvwxyz".split("")));
Collections.shuffle(values);
List<String> randomValues = values.subList(0, 7);
for (String value : randomValues) {
    System.out.println(value);
}

如果字符列表是从其他来源生成的,那会更有意义,但演示了Collections.shuffle方法

相关问题