生成仅包含指定字符的指定长度的随机字符串(在Java中)
有人知道用Java生成指定长度和字符的随机字符串的好方法吗 例如,“长度”可以是5,“可能的字符”可以是“a、b、c、1、2、3、!” 所以 c!a1b是有效的 但是 cba16不是 我可以尝试从头开始写一些东西,但我觉得这一定是生成密码、生成优惠券代码等东西的常见用例生成仅包含指定字符的指定长度的随机字符串(在Java中),java,random,password-generator,Java,Random,Password Generator,有人知道用Java生成指定长度和字符的随机字符串的好方法吗 例如,“长度”可以是5,“可能的字符”可以是“a、b、c、1、2、3、!” 所以 c!a1b是有效的 但是 cba16不是 我可以尝试从头开始写一些东西,但我觉得这一定是生成密码、生成优惠券代码等东西的常见用例 有什么想法吗?执行此操作的代码非常短。有一个char[]或包含N个合法字符的字符串,并且,在长度时间内,选择一个介于0和N-1之间的随机数R,使用R选择一个要附加到生成的字符串中的字符。执行此操作的代码非常短。有一个字符[]或包
有什么想法吗?执行此操作的代码非常短。有一个char[]或包含N个合法字符的字符串,并且,在长度时间内,选择一个介于0和N-1之间的随机数R,使用R选择一个要附加到生成的字符串中的字符。执行此操作的代码非常短。有一个字符[]或包含N个合法字符的字符串,并且,在长度倍上,选择一个介于0和N-1之间的随机数R,使用R选择一个要附加到生成的字符串中的字符。您想要这样的内容吗
Random r=new Random();
char[] possibleChars="abc123!".toCharArray();
int length=5;
char[] newPassword=new char[length];
for (int i=0; i<length;i++)
newPassword[i]=possibleChars[r.nextInt(possibleChars.length)];
System.out.println(new String(newPassword));
Random r=new Random();
char[]possibleChars=“abc123!”.toCharArray();
整数长度=5;
char[]newPassword=新字符[长度];
对于(inti=0;i你想要这样的东西吗
Random r=new Random();
char[] possibleChars="abc123!".toCharArray();
int length=5;
char[] newPassword=new char[length];
for (int i=0; i<length;i++)
newPassword[i]=possibleChars[r.nextInt(possibleChars.length)];
System.out.println(new String(newPassword));
Random r=new Random();
char[]possibleChars=“abc123!”.toCharArray();
整数长度=5;
char[]newPassword=新字符[长度];
对于(int i=0;i
我可以尝试从头开始写一些东西,但我觉得这一定是生成密码、生成优惠券代码等东西的常见用例
这并不常见,详细的需求每次都不同。此外,代码简单到微不足道的程度。(将下面的关注点模块化…它们实际上是关于需求而不是解决方案。)
简而言之,编写自己的方法比寻找现有的库方法更快
当您使用涉及随机数的方案时,您需要意识到发生冲突的可能性;即,该方法将在多个情况下生成相同的随机字符串。您可以通过使用更长的字符串来缓解这一问题,但这仅适用于某一点…取决于您的随机数生成器。(典型的随机数生成器实际上是伪随机数生成器,生成一个最终循环的数字序列。即使使用完美的随机数生成器,在短序列上重复的概率也是有限的。)
事实上,这也是为什么“一刀切”的解决方案不是一个好主意的另一个原因
我可以尝试从头开始写一些东西,但我觉得这一定是生成密码、生成优惠券代码等东西的常见用例
这并不常见,详细的需求每次都不同。此外,代码简单到微不足道的程度。(将下面的关注点模块化…它们实际上是关于需求而不是解决方案。)
简而言之,编写自己的方法比寻找现有的库方法更快
当您使用涉及随机数的方案时,您需要意识到发生冲突的可能性;即,该方法将在多个情况下生成相同的随机字符串。您可以通过使用更长的字符串来缓解这一问题,但这仅适用于某一点…取决于您的随机数生成器。(典型的随机数生成器实际上是伪随机数生成器,生成一个最终循环的数字序列。即使使用完美的随机数生成器,在短序列上重复的概率也是有限的。)
事实上,这也是“一刀切”解决问题不是一个好主意的另一个原因。如果这是为了真正的安全,而不是家庭作业或编程练习,那么请使用SecureRandom,而不是Random
阅读网站上关于随机生成密码和其他东西的许多非常好的想法。如果这是为了真正的安全,而不是家庭作业或编程练习,那么使用SecureRandom,而不是random
阅读网站上关于随机生成密码和其他内容的许多非常好的想法。创建一个允许字符的数组。在数组中生成随机索引。继续,直到你有足够的字符。创建一个允许字符的数组。在数组中生成随机索引。继续,直到你有足够的字符所有的角色。