我必须创建一个包含特定范围内随机数的数组,但每个数字必须包含与数字n(用户输入)相同的数字。也可以复制数字。例如n = 11452所以生成的数字可以是221545.每个下一个数字必须包含1,4,5,2(在这种情况下,n是11452)我只需要一个解决这个问题的想法。
答案 0 :(得分:0)
1)确定用户输入中的不同数字的数量(在您的示例中为4:1,2,4,5)
2)创建一个至少这个数字的随机数(在你的例子中:至少1000)
3)在找到的号码的随机位置插入请求的数字。确保这些位置不同。即,确保没有请求的数字被另一个数字覆盖。
这有意义吗?
答案 1 :(得分:0)
1)将用户输入的数字解析为String
,并将所有数字添加到Set
。
2)将您的集转换为数组以访问数组的随机索引。
3)通过随机索引访问转换后数组中的已解析数字。
也许,这不是一个完美的实现,但以下方法将生成一个随机数字,符合您的要求,据我了解。生成的随机数字的长度与用户输入的数字一样长。
只需修改它即可创建一个数组,其中包含生成的随机数作为您的要求。
public int generate(String number) throws NumberFormatException {
// 1) parse number and add the digits to a set
HashSet<Integer> digits = new HashSet<>();
for (String digitStr : number.split("")) {
int digit = Integer.parseInt(digitStr);
digits.add(digit);
}
// 2) convert the set to array to access via random index
Integer[] digitArray = new Integer[number.length()];
digits.toArray(digitArray);
String generated = "";
Random random = new Random();
for (int i=0; i < number.length(); i++) {
// 3) grap a random digit from array and append it to your result
int randomIndex = Math.abs(random.nextInt()) % number.length();
generated += digitArray[randomIndex];
}
return Integer.parseInt(generated);
}