我正在努力创建一种可以创建各种大小的随机数组的方法。
我需要这个,因为我必须使用随机数组测试一些算法,我们需要报告它们在不同输入大小上的表现。
要拥有不同的大小,我虽然可以创建一个包含我想要的所有输入大小的数组并循环遍历它,然后将值分配给n,但它似乎没有工作。
以下代码编译,但我没有得到不同的输入大小。但是我得到一个随机数组。
我在另一个课程中有相关的算法并且它们都运行正常,所以我不会在这里包括 - 它只是这部分让我绊倒。
有人有什么想法吗?
public class Array {
static int[] randomArray(int n){
int [] inputSize = {50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000};
for (int i=0; i<inputSize.length; i++){
n = inputSize[i];
}
int[] array = new int[n];
for (int j = 0; j < n; j++){
array [j] = (int) (Math.random() * 100);
}
return array;
}
}
答案 0 :(得分:0)
你的问题就在这个循环中
for (int i=0; i<inputSize.length; i++){
n = inputSize[i];
}
n将始终等于500000;
您可以使用随机替换此循环。
Random random = new Random();
n = inputSize[random.nextInt(inputSize.length)];
因此,此代码将从您的inputSize
数组
答案 1 :(得分:0)
在循环结束时:
for (int i=0; i<inputSize.length; i++){
n = inputSize[i];
}
n
的值为500000
解决方案是将所有后续代码也放入该循环中。
编辑:
但是,您的方法仍将只返回单个数组。或许分手
public class Array {
private static int [] inputSize = {50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000};
public static void main(String[] args) {
for(int i=0; i<inputSize.length; i++){
int size = inputSize[i];
int[] randomArray = createRandomArray(size);
//perform your tests on randomArray
}
}
/**
* Creates a new int[] of length 'size', filled with random ints between 0-100
**/
private static int[] createRandomArray(int size){
int[] array = new int[size];
for (int j = 0; j < size; j++){
array [j] = (int) (Math.random() * 100);
//or replace with a call to Random.nextInt(100) as suggested by others, for tidiness and to avoid the cast
}
return array;
}
}
答案 2 :(得分:0)
要获得随机数组,您需要随机化 n 。看:
static int[] randomArray(){
//sizes
int [] inputSize = {50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000};
//randomized size
int n = inputSize[(int) (Math.random() * inputSize.length)];
//array with randomized size
int[] array = new int[n];
//filling array with randomized array
for (int j = 0; j < n; j++){
array [j] = (int) (Math.random() * 100);
}
//randomized array (values + size)
return array;
}
结果:
[59, 82, 40, 2, 34, 15, 96, 98, 73, 71, 93, 83, 37, 88, 87, 11, 44, 81, 61, 33, 99, 71, 24, 41, 50, 77, 4, 39, 34, 12, 33, 94, 92, 50, 95, 76, 92, 47, 85, 56, 97, 7, 34, 50, 67, 69, 34, 47, 22, 91, 50, 68, 81, 67, 37, 90, 72, 16, 28, 37, 97, 74, 39, 32, 66, 63, 30, 90, 61, 44, 39, 11, 84, 89, 70, 79, 88, 58, 88, 48, 89, 16, 82, 7, 17, 11, 94, 4, 22, 29, 83, 65, 21, 39, 22, 35, 87, 87, 10, 4]
更新于05/12/2018:如果您需要订购此结果,请执行以下操作:
static int[][] randomArray(){
//sizes
int [] inputSize = {50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000};
//result
int[][] result = new int[inputSize.length][];
//randomized size
for (int i=0; i<inputSize.length; i++){
//define length
int n = inputSize[i];
//create array
int[] array = new int[n];
//filling array with randomized array
for (int j = 0; j < n; j++){
array[j] = (int) (Math.random() * 100);
}
result[i] = array;
}
//randomized array (values + size)
return result;
}
结果:
[88, 9, ...] # n = 50
[25, 37, 24, 35, 52, ...] # n = 100
[2, 34, 7, 17, 82, 42, 20, 57, 69, 24, ...] #n = 500
...