均匀分布元素(将int值添加到int值数组)

时间:2017-12-08 04:38:23

标签: swift

假设我有一个Ints数组,所有元素都等于零。它看起来像这样:

let arr: [Int] =  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

这个数组总共有11个元素。我希望这个数组中的三个元素成为第一个。我希望这些值在整个数组中均匀分布,以便它看起来像这样:

[0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0]

无论有多少元素,我希望能够添加多少个并均匀分布(或尽可能接近均匀分布)。我怎么能这样做?

注意:对于任何想知道我为什么需要这个的人,我有一个字符串集合,当它们连接在一起构成一大堆文本。将零视为文本片段,并将其视为我在文本之间添加的广告。我希望尽可能均匀地分发这些广告。我认为这是一种表达我需要的简单方法。

1 个答案:

答案 0 :(得分:1)

也许你可以试试这个。

var arr: [Int] =  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
let distribution = arr.count / 3 // 3 is the number of 1s
for (index, value) in arr.enumerated() {
    arr[index] = (index + 1) % distribution == 0 ? 1 : value
}

print(arr) // [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0]

假设值分布> 1