gpt4 book ai didi

matlab - 如果截断,为什么从内核分布生成的随机数会慢 1000 倍?

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:18 25 4
gpt4 key购买 nike

我更愿意截断我的 Distribution,但考虑到时间损失,目前根本不可能。

标准内核分发:

expectation=fitdist(BTS,'kernel');

结果:

tic;expectation.random(10000,1);toc;
Elapsed time is 0.000745 seconds.

截断代码:

Exp{i,j}=truncate(expectation,min(BTS)-1,max(BTS)+1);

结果:

tic;random(Exp{i,j},1,10000);toc
Elapsed time is 0.772295 seconds.

最佳答案

作为替代方案,您可以尝试从非截断分布中抽取随机数并自行进行截断。

我没有统计工具箱,所以将使用randn在这里抽取随机数:

function M = truncated_normal(n)
M = randn(n,1);
I = M < -2 | M > 2;
n = nnz(I);
if n>0
M(I) = truncated_normal(n);
end

这个函数绘制n来自给定分布的随机数,然后找到所选区间 ( M < -2 | M > 2 ) 之外的任何值,并通过递归调用自身为这些值绘制新值。

如果您愿意,该函数也可以用 while 循环编写。但只要随机值在尾部的概率很小,就不需要迭代。

关于matlab - 如果截断,为什么从内核分布生成的随机数会慢 1000 倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467943/

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