我想从a到z选择7个随机字母
到目前为止,我只找到了选择单个字母https://stackoverflow.com/a/5202888/3209901
的方法Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');
为什么七个字母,因为我需要对这七个字母应用一些条件 - 检查这七个字母形成的字词,字长应至少为4个字母......
答案 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个随机字符。您可以将这些添加到数组List
或StringBuilder
。您还可以使用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
方法