Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成仅包含指定字符的指定长度的随机字符串(在Java中)_Java_Random_Password Generator - Fatal编程技术网

生成仅包含指定字符的指定长度的随机字符串(在Java中)

生成仅包含指定字符的指定长度的随机字符串(在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选择一个要附加到生成的字符串中的字符。执行此操作的代码非常短。有一个字符[]或包

有人知道用Java生成指定长度和字符的随机字符串的好方法吗

例如,“长度”可以是5,“可能的字符”可以是“a、b、c、1、2、3、!”

所以

c!a1b是有效的

但是

cba16不是

我可以尝试从头开始写一些东西,但我觉得这一定是生成密码、生成优惠券代码等东西的常见用例


有什么想法吗?

执行此操作的代码非常短。有一个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


阅读网站上关于随机生成密码和其他内容的许多非常好的想法。

创建一个允许字符的数组。在数组中生成随机索引。继续,直到你有足够的字符。创建一个允许字符的数组。在数组中生成随机索引。继续,直到你有足够的字符所有的角色。