我需要创建一个返回单个字符的随机字符生成器。字符应该在字母表的字母范围内,数字0到9,以及一些字符,如。?/ - 。任何一个例子将不胜感激。
答案 0 :(得分:39)
最简单的方法是执行以下操作:
String alphabet
。N = alphabet.length()
java.util.Random
询问int x = nextInt(N)
alphabet.charAt(x)
是字母以下是一个例子:
final String alphabet = "0123456789ABCDE";
final int N = alphabet.length();
Random r = new Random();
for (int i = 0; i < 50; i++) {
System.out.print(alphabet.charAt(r.nextInt(N)));
}
答案 1 :(得分:10)
见以下链接: http://www.asciitable.com/
public static char randomSeriesForThreeCharacter() {
Random r = new Random();
char random_3_Char = (char) (48 + r.nextInt(47));
return random_3_Char;
}
现在你可以在一次调用时生成一个角色。
答案 2 :(得分:4)
在[0,x)之间选择一个随机数,其中x是不同符号的数量。希望选择是统一选择的,而且不可预测: - )
现在选择代表x的符号。
利润!
我会开始阅读Pseudorandomness,然后是一些常见的Pseudo-random number generators。当然,您的语言有希望已经具有合适的“随机”功能: - )
答案 3 :(得分:3)
以下是安全,简单但有点贵的会话标识符的代码。
import java.security.SecureRandom;
import java.math.BigInteger;
public final class SessionIdentifierGenerator
{
private SecureRandom random = new SecureRandom();
public String nextSessionId()
{
return new BigInteger(130, random).toString(32);
}
}
答案 4 :(得分:2)
为什么重新发明轮子? Apache Commons的RandomStringUtils具有可以指定生成字符的字符集的函数。您可以将所需内容带到您的应用中:
http://kickjava.com/src/org/apache/commons/lang/RandomStringUtils.java.htm
答案 5 :(得分:1)
你应该首先制作一个包含你想要的所有字母/数字的字符串
然后,做一个随机。即G。 Random rnd = new Random;
最后,制作一些实际上从包含您的字母表的字符串中获取随机字符的内容
例如,
import java.util.Random;
public class randomCharacter {
public static void main(String[] args) {
String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ?/.,";
Random rnd = new Random();
char char = alphabet.charAt(rnd.nextInt(alphabet.length()));
// do whatever you want with the character
}
}
请参阅this 这是我从中得到这些信息的地方。
答案 6 :(得分:0)
使用一些简单的命令行(bash脚本):
$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 30 | xargs
t315,qeqaszwz6kxv?761rf.cj/7gc
$ cat /dev/urandom | tr -cd 'a-z0-9,.?/\-' | head -c 1 | xargs
f
n
字符'\n'
字符答案 7 :(得分:0)
Random random = new Random();
int n = random.nextInt(69) + 32;
if (n > 96) {
n += 26;
}
char c = (char) n;
我想这取决于您要包含哪个标点符号,但这应该生成一个随机字符,包括此ASCII表上的所有标点符号。基本上,我已经从32 - 96或123 - 126生成了一个随机int,然后我将其转换为char,它给出了相当于该数字的ASCII。另外,请确保import java.util.Random
答案 8 :(得分:0)
随机字符 package com.company;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
// write your code here
char hurufBesar =randomSeriesForThreeCharacter(65,90);
char angka = randomSeriesForThreeCharacter(48,57);
char simbol = randomSeriesForThreeCharacter(33,47);
char hurufKecil= randomSeriesForThreeCharacter(97,122);
char angkaLagi = randomSeriesForThreeCharacter(48,57);
System.out.println(hurufBesar+" "+angka+" "+simbol+" "+hurufKecil+" "+angkaLagi);
}
public static char randomSeriesForThreeCharacter(int min,int max) {
int randomNumber = ThreadLocalRandom.current().nextInt(min, max + 1);
char random_3_Char = (char) (randomNumber);
return random_3_Char;
}
}