gpt4 book ai didi

java - 将随机值按一定比例均匀分布在二维数组中

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:58 24 4
gpt4 key购买 nike

假设我有一个百分比列表。

Map<Integer, Integer> ratio = new HashMap<Integer, Integer>();
ratio.put(0, 10);
ratio.put(1, 50);
ratio.put(3, 40);

然后我有一个二维数组。

int[][] arr = new int[50][50];

现在我想随机但均匀地分配定义的值 013 以及它们各自的 比率该数组中的 105040

我该怎么做?

最佳答案

用第一个零、第二个 1 和 3 填充一维数组。

类似于:

int arr[N][M] = //;
int array[N*M] = //;
int total_array_2D_size = N * M;
int j = 0;
Set<Map.Entry<Integer, Integer>> set = ratio.entrySet();

for (Map.Entry<Integer, Integer> entry : set)
{
int k = entry.getKey(); // Take the number
int ratio = entry.getValue(); // Take the ratio
int N = (total_array_2D_size * ratio) / 100; // The number of times 'k' should
// appear on the finally 2D array

for(int i = 0; i < N; i++,j++) array[j] = k; // Fill the 1D array
}

比起 Shuffle algorithm并打乱你的一维数组。最后填满您的二维数组。

for(int i = 0,k = 0; i < N; i++)
for(int j = 0; j < M; j++,k++)
arr[i][j] = array[k];

由于您的二维数组有 2500 个位置 (50^2),最后您应该有 250 个“0”(0.10 * 50^2)、1250 个“1”(0.50 * 50^2) 和 1000 个“3” (0.4 * 50^2)。

关于java - 将随机值按一定比例均匀分布在二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com