随机大小的数组,其中只有三个

Random sized array and exactly three ones in it

早上好,

我需要创建一个 [0,1] 的列表,其长度由用户定义(全局变量)。有一个简单的解决方案:

set listInd (list n-values numOfInd [random 2])

但我需要确保列表中正好有三个,并且它们被放置在随机位置。有办法吗?

此致。

您可以创建 3 个随机数(索引),然后在该索引列表定义的位置上创建一个带有 1 的列表:

to-report rand-list[n k]
  let ind-list n-of k n-values n [?]
  report n-values n [ifelse-value (member? ? ind-list) [1][0]]
end

用法:

show rand-list 10 3

; result:
; [0 1 0 0 0 0 1 0 0 1]

bergant 解决方案的替代方法是收集所需数量的 1 和 0,然后将它们随机混合在一起:

to-report rand-list [n k]
  let zeros n-values (n - k) [0]
  let ones n-values k [1]
  report shuffle sentence zeros ones
end