假设我有一个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]
无论有多少元素,我希望能够添加多少个并均匀分布(或尽可能接近均匀分布)。我怎么能这样做?
注意:对于任何想知道我为什么需要这个的人,我有一个字符串集合,当它们连接在一起构成一大堆文本。将零视为文本片段,并将其视为我在文本之间添加的广告。我希望尽可能均匀地分发这些广告。我认为这是一种表达我需要的简单方法。
答案 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