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

时间:2015-12-28 10:01:50

标签: netlogo

早上好,

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

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

但是我需要确保,列表中只有三个,并且它们被放置在随机位置。有没有办法做到这一点?

问候。

2 个答案:

答案 0 :(得分:3)

您可以创建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]

答案 1 :(得分:2)

bergant解决方案的另一种选择是收集所需数量的零和零,然后将它们随机混合:

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