有没有可能写一个像 python 一样短的随机字母生成器?
Is there a possibility to write a random letter generator as short as in python?
所以我想缩短我的代码,我问自己 Java 中的随机字母生成器是否有可能与 python 中的一样短。在 python 中,它只是一对一的班轮。
下面的代码是我的代码:
int random = (int) Math.random()*25;
String[] letters ={"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"};
String letter = letters[random];
如果 "short" 只表示一行,那么这些中的任何一个都可以:
char letter = "abcdefghijklmnopqrstuvwxyz".charAt((int) (Math.random() * 26));
char letter = (char) ThreadLocalRandom.current().nextInt('a', 'z'+1);
char letter = (char) ('a' + Math.random() * 26);
使用 ASCII table。 97 = 'a',因此只需将您的随机数添加到其中并转换为 char.
public class MyClass {
public static void main(String args[]) {
char z = (char)(97 + Math.random()*26);
System.out.println("z = " + z);
}
}
这是创建 100 个字符的最短版本:
Character[] result = new Random().ints(100,'a','z'+1).mapToObj(ch -> (char)ch).toArray(Character[]::new);
所以我想缩短我的代码,我问自己 Java 中的随机字母生成器是否有可能与 python 中的一样短。在 python 中,它只是一对一的班轮。
下面的代码是我的代码:
int random = (int) Math.random()*25;
String[] letters ={"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"};
String letter = letters[random];
如果 "short" 只表示一行,那么这些中的任何一个都可以:
char letter = "abcdefghijklmnopqrstuvwxyz".charAt((int) (Math.random() * 26));
char letter = (char) ThreadLocalRandom.current().nextInt('a', 'z'+1);
char letter = (char) ('a' + Math.random() * 26);
使用 ASCII table。 97 = 'a',因此只需将您的随机数添加到其中并转换为 char.
public class MyClass {
public static void main(String args[]) {
char z = (char)(97 + Math.random()*26);
System.out.println("z = " + z);
}
}
这是创建 100 个字符的最短版本:
Character[] result = new Random().ints(100,'a','z'+1).mapToObj(ch -> (char)ch).toArray(Character[]::new);