问题标签 [montecarlo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
math - 在不存储所有数据点的情况下计算平均置信区间
对于大n
(请参阅下文了解如何确定足够大),通过中心极限定理将样本均值的分布视为正态(高斯)是安全的,但我想要一个为任何n
. 这样做的方法是使用具有n-1
自由度的学生 T 分布。
所以问题是,给定您一次收集或遇到一个数据点的流,您如何计算c
(例如,c=.95
)数据点均值的置信区间(不存储所有先前遇到的数据)?
另一种问这个问题的方法是:如何在不存储整个流的情况下跟踪数据流的第一时刻和第二时刻?
奖励问题:您可以在不存储整个流的情况下跟踪更高的时刻吗?
algorithm - 我在哪里可以了解有关“蚁群”优化的更多信息?
我一直在这里和那里阅读有关使用“蚁群”模型作为优化各种类型算法的启发式方法的内容。但是,我还没有找到一篇文章或书籍以介绍性的方式讨论蚁群优化,甚至是非常详细的讨论。谁能指出我可以了解更多关于这个想法的一些资源?
math - 数学方程可能无限循环?
我有以下问题,并且无法理解等式的一部分:
估计积分的蒙特卡罗方法基本上是,取大量随机样本并确定加权平均值。例如,f(x) 的积分可以从 N 个独立的随机样本 x r估计为
替代文字 http://www.govtam.com/images/area.gif
对于 xr 在 [x1, x2] 范围内的均匀概率分布。由于每个函数评估 f(xr) 都是独立的,因此很容易将这项工作分配给一组进程。
我不明白 f(x r ) 应该做什么?它是否反馈到相同的方程中?那不是无限循环吗?
algorithm - 生成随机列联表的有效方法?
生成随机列联表的有效方法是什么?列联表被定义为一个矩形矩阵,使得每一行的总和是固定的,每一列的总和是固定的,但是只要每一行和每一列的总和是正确的,各个元素可以是任何东西。
请注意,生成随机列联表非常容易,但我正在寻找比简单算法更有效的方法。
python - 使用 Monte Carlo 查找 PI 数字
我尝试了许多算法来使用蒙特卡洛找到 π。解决方案之一(在 Python 中)是这样的:
可悲的是,即使有 1000000000,精度也非常差(3.141...)。
这是该方法可以提供的最大精度吗?我选择蒙特卡洛的原因是它很容易在平行部分中分解。是否有另一种易于分解和计算的 π 算法?
c# - C# Monte Carlo 增量风险计算优化、随机数、并行执行
我目前的任务是优化蒙特卡洛模拟,该模拟按地区计算一组债务人的资本充足率数据。
它的运行速度要慢约 10 倍,这对于需要在生产中运行以及需要运行次数或每日运行的地方来说太慢了。此外,在某个阶段,结果数据的粒度可能需要改进到桌面级别,我得到的代码基本上是一个原型,业务部门在半生产能力中使用它。
该应用程序当前是单线程的,因此我需要将其设为多线程,可能会查看Microsoft Parallel ExtensionsSystem.Threading.ThreadPool
库,但我受限于该银行服务器上的 .NET 2,因此我可能不得不考虑这个人的端口,http://www.codeproject.com/KB/cs/aforge_parallel.aspx。
我正在尽我最大的努力让他们升级到 .NET 3.5 SP1,但对于这种规模的组织来说,这是一项重大的工作,在我的合同期限内可能是不可能的。
我已经使用dotTrace ( http://www.jetbrains.com/profiler )的试用版分析了应用程序。还有哪些其他好的分析器?免费的?
大量执行时间用于生成均匀随机数,然后将其转换为正态分布的随机数。他们正在使用 C# Mersenne twister实现。我不确定他们从哪里得到它,或者它是否是最好的方法(或最好的实现)来生成统一的随机数。然后将其转换为用于计算的正态分布版本(我还没有深入研究翻译代码)。
另外使用以下内容是什么体验?
http://www.qlnet.org(quantlib 的 C# 端口)或
你知道的任何替代方案?我是 C# 开发人员,所以更喜欢 C#,但是C++ 的包装器应该不是问题,不是吗?
利用 C++ 实现可能更快。我认为其中一些库将具有直接生成正态分布随机数的最快方法,而无需转换步骤。他们也可能有一些其他的功能,这将有助于后续的计算。
此外,这台计算机是四核 Opteron 275、8 GB 内存,但 Windows Server 2003 Enterprise 32 位。我应该建议他们升级到64 位操作系统吗?任何支持此决定的文章链接都将不胜感激。
无论如何,非常感谢您提供的任何建议和帮助。
excel - 如何在给定定量数据、Excel、趋势线、蒙特卡罗模拟的情况下确定执行时间的公式
我可以在一些数学和 Excel 方面得到你的帮助吗?
我已经对我的应用程序进行了基准测试,增加了迭代次数和记录以秒为单位的时间的义务人数量,结果如下:
我现在如何想出一个函数 T(以秒为单位的时间)作为债务人数量 O 和迭代次数 I 的表达式
谢谢
c# - C# Mersenne Twister 随机整数生成器实现 (SFMT) 蒙特卡罗模拟
到目前为止,我一直在使用这里找到的 C# Mersenne Twister来生成随机数:
http://www.centerspace.net/resources.php
我刚刚发现SFMT应该是这里的两倍:
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/
谁能指出我的 SFMT 的 C# 实现?
我的要求是生成(包括)0 和 2^20(1048576)之间的整数。
为了在 24 小时制上运行模拟,我每天需要做数万亿次,所以我准备花几天时间将它调整到完美。
目前,我通过添加一种新方法来调整 Center Space Mersenne Twister 以满足我的要求:
使用genrand_int32()
我想生成我自己的版本的方法genrand_int20()
,生成一个介于(包括)0 和 2^20 之间的整数,以节省上面的演员表和移位,但我不懂数学。我该怎么做呢?
使用uint 会比 int 更快,还是只是可寻址数字的问题?因为我最多只需要1048576,所以我只关心速度。
这也将在带有 .NET 2 的 Windows Server 2003 R2 SP2(32 位)机器上运行。处理器是AMD Opteron 275(4 核)。
c++ - 快速生成随机集,蒙特卡洛模拟
我有一组数字~100,我希望在这个集合上进行 MC 模拟,基本思想是我完全随机化集合,对前 20 个值进行一些比较/检查,存储结果并重复。
现在实际的比较/检查算法非常快,它实际上在大约 50 个 CPU 周期内完成。考虑到这一点,为了优化这些模拟,我需要尽可能快地生成随机集。
目前我正在使用 George Marsaglia 的 Multiply With Carry 算法,它在 17 个 CPU 周期内为我提供了一个随机整数,速度非常快。然而,使用 Fisher-Yates 洗牌算法,我必须生成 100 个随机整数,大约 1700 个 CPU 周期。这使我的比较时间黯然失色。
所以我的问题是是否有其他众所周知/强大的技术来进行这种类型的 MC 模拟,我可以避免长时间的随机集生成时间?
我想过只是从集合中随机选择 20 个值,但是我必须进行冲突检查以确保选择了 20 个唯一条目。
更新:
感谢您的回复。关于我在发帖后提出的一种方法,我还有另一个问题。问题是,这是否会提供一个强大的真正(假设 RNG 是好的)随机输出。基本上我的方法是设置一个与输入数组长度相同的整数值数组,将每个值设置为零。现在我开始从输入集中随机选择 20 个值,如下所示:
基本上就是我上面提到的,随机选择 20 个值,但它似乎是一种确保没有冲突的优化方式。这会提供良好的随机输出吗?它相当快。
multicore - 如何在 Ocaml 中使用多核进行蒙特卡罗模拟?
Ocaml 进程只能使用一个核心,为了使用多个核心,我必须运行多个进程。
是否有任何 Ocaml 框架可用于并行化 Monte Carlo 模拟?