问题标签 [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.

0 投票
4 回答
6320 浏览

r - 加速蒙特卡罗模拟的最佳技巧是什么?

每当我在 S-Plus 中运行大规模的蒙特卡罗模拟时,我总是在等待它完成时长出胡须。

在 R 中运行蒙特卡罗模拟的最佳技巧是什么?任何以分布式方式运行进程的好例子?

0 投票
2 回答
968 浏览

r - MCMClogit 混乱

任何人都可以向我解释为什么

总是导致 MCMC 接受率为 0?任何解释将不胜感激!

0 投票
3 回答
5671 浏览

.net - 使用 .NET 优化蚁群

我正在寻找实现蚁群优化的 .NET-Class 库或 .NET-Framework。你能给我关于这个主题的任何链接、资源等吗?

0 投票
5 回答
2146 浏览

multithreading - 并行,但速度较慢

我正在使用蒙特卡罗方法来计算 pi 并使用并行编程和 openmp 进行基本体验

问题是当我使用 1 个线程,x 次迭代时,总是比 n 个线程,x 次迭代运行得快。谁能告诉我为什么?

例如,代码运行如下“a.out 1 1000000”,其中 1 是线程,1000000 是迭代

0 投票
5 回答
2291 浏览

algorithm - 模拟“命运之轮”(Monte Carlo Simulation Hit or Miss Method)

我正在尝试制作一个使用 Monte Carlo Hit 或 Miss Simulation 的随机发生器。

我有一个表示 ID 和概率值的键值对:

当您添加所有这些值时,您将得到 1.0。

您可以将这些值想象为“轮”上“切片”的总面积(例如:ID 2 占轮子的 37%,而 ID 3 仅占轮子的 12%)。当转换为“范围”时,它将如下所示:

现在,我使用 Random.NextDouble() 来生成一个介于 0.0 和 1.0 之间的随机值。该随机值将被视为车轮上的“旋转”。比如说,随机化器返回 0.35,然后将选择 ID 2。

鉴于我有一个双打数组,实现这一点的最佳方法是什么?

0 投票
5 回答
9608 浏览

3d - 单位球面上的均匀随机(蒙特卡罗)分布

我需要澄清一下为我的宠物光线追踪器生成随机值的算法。
我从一点发射光线。我对这些光线的分布有疑问:我需要分布均匀,但不是......

我现在面临的问题是,在我扭曲了结果空间之后,最初均匀的分布并不均匀。

例如,如果是极坐标系,我会生成 r 和 t 角。分布不均匀,也不可能是均匀的:靠近每个极点的空间比靠近赤道的空间具有更多的结果密度。原因很清楚:我将均匀分布的点从圆柱形空间转换为球形。我扭曲了结果。同样的问题是,如果我对多维数据集中随机生成的点进行归一化。

我现在的想法是:我想创建一个四面体,标准化它的顶点,用中间的点分割每个面(三角形),标准化它并递归重复,直到我有足够的点。然后我稍微“扭曲”这些观点。然后我再次标准化它们。而已。

我知道这种方法本身并不是纯数学的蒙特卡罗方法,因为除了最后一步之外,我在任何步骤中都没有使用随机分布。而且我不喜欢这种复杂性的解决方案。

任何人都可以提出更简单的建议吗

  • 随机的
  • 制服
  • 快速地
  • 简单的

谢谢!

编辑:
我需要一种快速的方法,而不仅仅是正确的方法。这就是我问蒙特卡洛的原因。提供的答案是正确的,但不是很快。四面体的方法很快,但不是很“随机”=>不正确。
我真的需要更合适的东西。

0 投票
7 回答
4657 浏览

c++ - c++中蒙特卡洛方法的好书?

有人可以推荐一本关于 C++ 中蒙特卡洛算法的好介绍书吗?最好是应用于物理学,甚至更优选地,这种物理学是量子力学。

谢谢!

0 投票
4 回答
1635 浏览

python - 并行过程的最佳种子

我需要在不同的机器上并行运行 MonteCarlo 模拟。代码是用 c++ 编写的,但程序是使用 python 脚本设置和启动的,该脚本设置了很多东西,尤其是随机种子。函数 setseed 是一个 4 字节的无符号整数

使用一个简单的

不是很好,因为我将作业提交到集群上的队列,它们保持等待几分钟然后它们开始,但是开始时间是不可预测的,可能是两个作业同时开始(秒),所以我切换到:

但我不开心。什么是最好的解决方案?也许我可以结合以下信息:时间、机器 ID、进程 ID。或者也许最好的解决方案是从 /dev/random (linux机器)读取?

如何从 /dev/random 读取 4 个字节?

给我一个字符串,我要一个整数!

0 投票
8 回答
13113 浏览

java - 有效地选择随机数

我有一种方法,它使用随机样本来近似计算。这种方法被调用了数百万次,因此选择随机数的过程是否高效非常重要。

我不确定 java 到底有多快Random().nextInt,但我的程序似乎并没有像我希望的那样受益。

选择随机数时,我执行以下操作(在半伪代码中):

现在,这显然有一个糟糕的最坏情况运行时间,因为理论上随机函数可以永远添加重复的数字,从而永远停留在 while 循环中。但是,这些数字是从 {0..45} 中选择的,因此在大多数情况下不太可能出现重复值。

当我使用上述方法时,它只比我的其他方法快 40%,这不是近似的,但会产生正确的结果。这运行了大约 100 万次,所以我希望这种新方法至少快 50%。

您对更快的方法有什么建议吗?或者,也许您知道一种更有效的生成一组随机数的方法。

为了澄清,这里有两种方法:

经过一些测试和分析,我发现这种方法是最有效的:

0 投票
7 回答
11251 浏览

c# - 是否有可以执行 Excel NORMINV 函数的 C# 库?

我正在运行一些Monte Carlo 模拟,并使用 Office Interrop广泛使用 Excel 函数NORM.INV 。该函数采用三个参数(概率、平均值、标准差)并返回累积分布的倒数。

我想将我的代码移动到 Web 应用程序中,但这需要在服务器上安装 Excel。有人知道具有与 NORM.INV 等效功能的 C# 统计库吗?