范围为 (A..Z, 0..9) 和标点符号的随机字符生成器
Posted
技术标签:
【中文标题】范围为 (A..Z, 0..9) 和标点符号的随机字符生成器【英文标题】:Random character generator with a range of (A..Z, 0..9) and punctuation 【发布时间】:2011-03-08 01:48:18 【问题描述】:我需要创建一个返回单个字符的随机字符生成器。该字符应在字母、数字 0 到 9 以及某些字符(如 ,.?/-)内。任何示例将不胜感激。
【问题讨论】:
第一。你认为你会使用什么语言?第二。请发布您对如何执行此操作的最佳猜测。这不是“为 me.com 做我的功课”。 在标签关闭之前添加一种语言。 用什么编程语言? 感谢您直率的回答。语言是Java。我正在使用 android SDK。我将生成数字并获取每个字符的数字的 ASCII 值。我不需要完成我的家庭作业。我今年 67 岁,编程时间可能比你还久。 为您的问题添加了标签。 【参考方案1】:在 [0, x) 之间选择一个随机数,其中 x 是不同符号的数量。希望选择是一致选择的,而不是可预测的:-)
现在选择代表 x 的符号。
利润!
我会开始阅读Pseudorandomness,然后是一些常见的Pseudo-random number generators。当然,你的语言希望已经有一个合适的“随机”函数:-)
【讨论】:
+1 使用合理的步骤 -> 步骤 -> 利润!!!遇到此类问题时的方案。【参考方案2】:使用一些简单的命令行(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
cat /dev/urandom:从内核中获取随机字符流
tr:只保留我们想要的 char char
head:只取第一个 n
字符
xargs:仅用于添加'\n'
char
【讨论】:
【参考方案3】:最简单的方法是:
使用所需的字符创建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)));
【讨论】:
【参考方案4】:这里是安全、简单但稍微昂贵的会话标识符的代码。
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);
【讨论】:
【参考方案5】:为什么要重新发明***?来自 Apache Commons 的 RandomStringUtils 具有您可以指定从中生成字符的字符集的函数。你可以把你需要的东西带到你的应用中:
http://kickjava.com/src/org/apache/commons/lang/RandomStringUtils.java.htm
【讨论】:
【参考方案6】:见以下链接: 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;
现在您可以在一次调用时生成一个角色。
【讨论】:
【参考方案7】: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】:您应该首先创建一个包含所有您想要的字母/数字的字符串。
然后,做一个随机的。 e. 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。 我就是从那里得到这些信息的。
【讨论】:
【参考方案9】:随机字符 包 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;
【讨论】:
以上是关于范围为 (A..Z, 0..9) 和标点符号的随机字符生成器的主要内容,如果未能解决你的问题,请参考以下文章
定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, 随机的10个字母和数字的组合;字母和数字的范围可以指定,类似(1~100)(A~z)