You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成不同大小的随机数组以测试算法性能?

解决随机数组生成问题:生成多种规模的数组用于性能测试

嘿,我一眼就看出问题所在啦!你当前的代码里,那个循环给n赋值的操作其实是无效的——因为循环结束后,n只会停在inputSize数组的最后一个元素(也就是500000),前面的50、100这些值都被覆盖掉了,所以最后只生成了这一个大小的数组。

要生成多种规模的随机数组,我们需要调整代码逻辑,让每个预设的大小都对应生成一个独立的数组。下面给你两种可行的方案:

方案一:返回二维数组一次性获取所有数组

把原方法修改为返回二维数组,每个子数组对应一个预设的大小:

public class Array {
    // 返回包含多种大小随机数组的二维数组
    static int[][] randomArrays() {
        int[] inputSizes = {50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000};
        int[][] arrays = new int[inputSizes.length][];
        
        for (int i = 0; i < inputSizes.length; i++) {
            int n = inputSizes[i];
            int[] array = new int[n];
            for (int j = 0; j < n; j++) {
                array[j] = (int) (Math.random() * 100);
            }
            arrays[i] = array;
        }
        return arrays;
    }
}

使用方式

在测试代码里可以这样遍历所有数组:

public class PerformanceTest {
    public static void main(String[] args) {
        int[][] allArrays = Array.randomArrays();
        for (int[] arr : allArrays) {
            System.out.println("当前测试数组大小:" + arr.length);
            // 在这里调用你的算法,比如排序、查找等,并统计性能
        }
    }
}

方案二:拆分方法,更灵活地生成数组

把生成单个随机数组的逻辑抽成独立方法,再通过另一个方法循环生成所有预设大小的数组(用List存储更灵活):

import java.util.ArrayList;
import java.util.List;

public class Array {
    // 生成单个指定大小的随机数组
    static int[] randomSingleArray(int n) {
        int[] array = new int[n];
        for (int j = 0; j < n; j++) {
            array[j] = (int) (Math.random() * 100);
        }
        return array;
    }

    // 生成所有预设大小的随机数组集合
    static List<int[]> getMultipleRandomArrays() {
        int[] inputSizes = {50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000};
        List<int[]> arraysList = new ArrayList<>();
        
        for (int size : inputSizes) {
            arraysList.add(randomSingleArray(size));
        }
        return arraysList;
    }
}

使用方式

public class PerformanceTest {
    public static void main(String[] args) {
        List<int[]> arraysList = Array.getMultipleRandomArrays();
        for (int[] arr : arraysList) {
            System.out.println("当前测试数组大小:" + arr.length);
            // 执行你的算法性能测试
        }
    }
}

两种方案都能解决你的问题,方案二更灵活——如果你后续需要添加或修改测试的数组大小,只需要修改inputSizes数组即可,而且randomSingleArray方法还能单独调用生成任意大小的数组,复用性更强。

内容的提问来源于stack exchange,提问作者Mairead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:57:19