有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用特定大小和特定值创建字节数组

我有一个带有10{}的字节array。我想创建一个具有特定大小的bytearray,它将随机只包含特定的10{},但频率必须几乎相同

我明白了:

public static byte[] a = {97, 98, 99, 100, 101, 102, 103, 104, 105, 49, 45};

我想用上面的byte创建一个二进制数据大小为2000bytes的文件


共 (1) 个答案

  1. # 1 楼答案

    最简单的方法(从代码的角度)是使用^{},它洗牌列表。要使用它,您需要创建具有所需分布的List个字节

    下面是一些代码:

    byte[] a = {97, 98, 99, 100, 101, 102, 103, 104, 105, 49, 45};
    int SIZE_MULTIPLIER = 20;
    
    List<Byte> bytes = new ArrayList<>();
    for (byte b : a) for (int i = 0; i < SIZE_MULTIPLIER; i++) bytes.add(b);
    Collections.shuffle(bytes);
    byte[] random = new byte[SIZE_MULTIPLIER * a.length];
    for (int i = 0; i < bytes.size(); i++) random[i] = bytes.get(i);
    

    注意,重要的不是初始数据的“随机性”——在这种情况下,可以方便地加载元素0二十次,然后加载元素1二十次,以此类推

    由于值的范围是而不是随机的(每个元素的使用次数与每个其他元素相同),因此最终数组的分布将与初始数组的分布相同