随机大小的数组,其中只有三个
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
早上好,
我需要创建一个 [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