📅  最后修改于: 2023-12-03 15:25:50.011000             🧑  作者: Mango
在程序设计中,我们经常需要根据某种规则,根据已有的数据,生成一个新的数组。有时我们需要生成一个与原数组不同的数组,本文将介绍如何在数组中找到至少 arr[i] 个元素与数组的对应元素不同的新数组 B。
我们可以通过遍历原数组 arr,将每个元素与一个随机数进行比较。如果两者相等,则将 B 数组对应位置的元素替换为一个与随机数不相等的随机数。重复此步骤,直到 B 中的元素个数满足条件。
实现该方法的伪代码如下:
function generateArray(arr) {
let B = []
for (let i = 0; i < arr.length; i++) {
let num = 0
while (num < arr[i]) {
let randomNum = Math.floor(Math.random() * 100)
if (randomNum === arr[i]) {
randomNum = Math.floor(Math.random() * 100)
}
B[i] = randomNum
num++
}
}
return B
}
假设原数组 arr 为 [2, 4, 1, 5],则运行 generateArray(arr) 后,可以得到一个符合要求的新数组 B,例如 [3, 89, 0, 97]。其中,B[0]、B[1]、B[2] 的值与原数组 arr 对应位置的元素不同,且 B 中至少有 arr[i] 个元素不等于 B[i]。
通过比较原数组中的元素与随机数,我们可以生成一个与原数组不同的数组 B。这个方法简单有效,在面对需要生成一个新数组,且每个元素需要与原数组不同的情况下,可以作为一个实用的函数。