簡體   English   中英

在數組上均勻分布 boolean 值(Javascript)

[英]Distribute boolean values uniformly over array (Javascript)

我有一個固定長度的 boolean 數組。 值默認為false
我需要用 N 個true值填充數組,這些值大多均勻分布並分布在數組上。

例如:如果長度為 7,N 為 3,它看起來像這樣:
[false, true, false, true, false, true, false]

如果長度為 14,N 為 5,它看起來像這樣:
[false, false, true, false, false, true, false, false, true, false, true, false, true, false]

問題是,對於如何傳播它並沒有嚴格的規則,只是它應該主要以均勻的方式傳播(也許有一個規則,即第一個和最后一個元素不會是真的,但不是必需的)。

 function createBoolArray(len, trues) { const arr = new Array(len).fill(false); let leftTrues = trues; let left = len; let divisor = 0; for(let i = 0; i < len && leftTrues > 0;) { left = len - i; divisor = Math.floor(left / leftTrues); if(Math.floor(left / divisor) > leftTrues) { i = i + divisor + 1; arr[i - 1] = true; } else { i = i + divisor; arr[i - 1] = true; } leftTrues--; } return arr; } console.log(createBoolArray(14, 5))

最終這樣做了(類似於@ChrisG 的建議):

function createBoolArray(len, trues) {
  const arr = new Array(len).fill(false);
  new Array(trues).fill(0).map((_, i) => 
  Math.floor((i+1) * (len-1) / trues))
 .forEach(e => arr[e] = true);

  return arr;
}

console.log(createBoolArray(14, 5))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM