我编写了代码来创建用户所需的数组和大小,但没有显示任何随机数。
public class ArrayStats {
public static void fillRandomArray(int [] a, int max) {
int [] randomArray = new int[max];
for (int i=0; i < randomArray.length; i++){
randomArray[i] = (int)(Math.random());
}
}
}
答案 0 :(得分:0)
问题是Math.random()返回一个从0.0到1.0的Double值 0.1到int = 0,....... 0.5到int = 0。 如果您需要生成随机数,请尝试:
public static int randomNumber(int min, int max) {
Random rand = new Random();
int num = rand.nextInt(max - min + 1) + min;
return num;
}
public static void fillRandomArray(int [] a, int max) {
int [] randomArray = new int[max];
for (int i=0; i < randomArray.length; i++){
//Example Generate random number between 1 and 9
randomArray[i] = randomNumber(1,9);
}
}
答案 1 :(得分:0)
这是对您的代码的一个微小修改,它将使用从0到Integer.MAX_VALUE的随机整数填充您的数组:
public class ArrayStats {
public static void fillRandomArray(int [] a, int max) {
int [] randomArray = new int[max];
for (int i=0; i < randomArray.length; i++){
randomArray[i] = (int)(Math.random() * Integer.MAX_VALUE);
}
}
}
这里的事情是Math.random()
返回0到1范围内的双精度值。当你将它强制转换为(int)时,它总是变为0。
或者,您可以查看课程Random
。
答案 2 :(得分:0)
随机值未被存储,因为函数Math.random()
生成的值介于0.0(含)和1.0(不包括)之间,因此,转换为int将始终返回0.来自官方文档:
返回带有正号的double值,大于或等于 0.0且小于1.0。返回值是伪随机选择的,具有来自该范围的(近似)均匀分布。
将Math.random()
结果乘以某个固定的整数值并转换为int或使用Random
实例的方法random.nextInt()
作为:
int rand = (int)(Math.random() * FIXED_INT_VAL);
或
Random r = new Random();
int rand = r.nextInt();
由于this post中解释的原因,建议采用后一种方法。
因此,您的代码变为:
public class ArrayStats {
public static void fillRandomArray(int [] a, int max) {
int [] randomArray = new int[max];
Random r = new Random();
for (int i=0; i < randomArray.length; i++){
randomArray[i] = r.nextInt();
}
}
}