gpt4 book ai didi

julia - 具有概率的向量/数组样本

转载 作者:行者123 更新时间:2023-12-03 21:15:24 25 4
gpt4 key购买 nike

我有一个 Bool矢量,只是 [true, false] .我可以从该向量中抽取 10 个样本

rand([true,false], 10)

但我怎样才能做到这一点 true以 80% 的概率和 false 绘制以 20% 的概率绘制?

最佳答案

使用 sample来自 StatsBase.jl 的函数,带有 Weights争论:

julia> using StatsBase

julia> sample([true, false], Weights([0.8, 0.2]), 10)
10-element Array{Bool,1}:
1
0
1
1
1
1
1
1
1
1

为了确保你得到你想要的,你可以写:
julia> countmap(sample([true, false], Weights([0.8, 0.2]), 10^8))
Dict{Bool,Int64} with 2 entries:
false => 20003766
true => 79996234

(当然,您的确切数字会有所不同)

此外,如果您特别需要二进制采样,您可以使用 Bernoulli来自 Distributions.jl 的分布:
julia> using Distributions

julia> rand(Bernoulli(0.8), 10)
10-element Array{Bool,1}:
0
1
1
0
1
1
1
1
1
1

julia> countmap(rand(Bernoulli(0.8), 10^8))
Dict{Bool,Int64} with 2 entries:
false => 20005900
true => 79994100

(您可以期望此方法更快)

最后 - 如果你不想使用任何包并且需要一个二进制结果,你可以写 rand(10) .< 0.8 ,再一次 - 你得到了你想要的:
julia> countmap(rand(10^8) .< 0.8)
Dict{Bool,Int64} with 2 entries:
false => 20003950
true => 79996050

关于julia - 具有概率的向量/数组样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61249079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com