问题标签 [boost-random]

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 投票
3 回答
4282 浏览

c++ - 来自 Beta 分布的随机数,C++

我用 C++ 编写了一个模拟,它根据特定的概率分布生成 (1,000,000)^2 个数字,然后对它们进行处理。到目前为止,我使用了指数、正态、伽玛、均匀和泊松分布。这是其中之一的代码:

现在我需要为 Beta 发行版运行它。到目前为止,我所做的所有分发都需要 10-15 个小时。Beta 发行版不在 boost/random 包中,所以我不得不使用 boost/math/distributions 包。我在 StackOverflow 上找到了这个页面,它提出了一个解决方案。这是(复制粘贴):

我复制了它并且它起作用了。我的模拟的运行时间估计是线性且可准确预测的。他们说这将运行 25 天。我看到了两种可能性: 1. 提出的方法不如我之前用于其他分布的方法 2. Beta 分布更难从中生成随机数

请记住,我对 C++ 编码的了解很少,所以我问的问题可能很愚蠢。我迫不及待地要等一个月才能完成这个模拟,所以我能做些什么来改进它吗?也许使用我使用的初始方法并修改它以使用 boost/math/distributions 包?我什至不知道这是否可能。

另一条可能有用的信息是,对于我需要生成的所有 (1,000,000)^2 数字,参数都是相同的。我这么说是因为 Beta 发行版确实有一个讨厌的 PDF,也许参数固定的知识可以以某种方式用于简化流程?只是一个随机的猜测。

0 投票
1 回答
7443 浏览

security - 如何生成安全会话 ID

对于 C++ Web 服务器,我必须生成会话 ID。我想到了使用某种随机数和哈希值,以及会话的初始 IP 地址和时间戳。

这会产生一个合理的、不可猜测的 ID 吗?什么是好的随机生成器算法(由 boost-random 实现的最可取的算法)?

亲切的问候托尔斯滕

我的解决方案现在看起来像:

成员是默认构造的:

0 投票
1 回答
1060 浏览

c++ - 使用 boost::random 库获取整数随机值而不是实际值

我正在尝试使用boost::random库获得真正的随机值。这是我的代码:

但我得到 0 到 20 之间的整数。

我能怎么做?

我还尝试了另一个引擎:

但什么都没有......(总是整数值)

0 投票
1 回答
558 浏览

c++ - 使用 boost 设置 gamma_distribution 的参数

我正在尝试使用 Boost 1.5 中的 Gamma 分布。现在我希望ktheta的值分别为 4 和 0.5。但是,每当我设置theta < 1 的值时,都会出现编译错误。

有什么办法可以解决这个问题吗?

0 投票
1 回答
1139 浏览

c++ - 启动梅森捻线机 PRNG

围绕mt19937的使用似乎有一些神话,特别是一旦播种生成器产生的“一些”比特数应该被忽略,以便尽可能接近伪随机性。

我见过的代码示例如下:

我的问题是:

  1. 这是神话还是这一切都有真相?

  2. 如果它是可行的,应该忽略多少位?因为我看到的数字
    似乎是任意的

0 投票
2 回答
131 浏览

gcc - boost::uniform_on_sphere 在数百万次正确实现后突然失败,但仅在某些主机上

问题

在正确生成 2 维随机向量一段时间后,boost::uniform_on_sphere分布突然生成了一个值为 的向量-nan。我已经在三台机器上测试了包含的程序 - 在其中两台机器上观察到错误,但在第三台机器上没有。有谁知道会发生什么?

编辑:如果使用相同的类型,它会发生在所有主机上。

东道主

主机 1

  • AMD Opteron(tm) 处理器 6174
  • g++ (GCC) 4.4.6 20120305 (红帽 4.4.6-4)
  • 3802480 实现后失败

主机 2

  • Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz
  • g++ (GCC) 4.7.2 20120921 (红帽 4.7.2-2)
  • 3802480 实现后失败

主机 3

  • Intel(R) Atom(TM) CPU D2700 @ 2.13GHz
  • g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  • 3802480 次实现后失败,输出略有不同

实现

在主机 1 和 2 上:

在主机 3 上,使用float代替float_t

该程序

这是简单地用g++ bug.cpp. 打开-O3优化并没有改变结果。

我真的很感激任何帮助!

0 投票
2 回答
123 浏览

boost - 二维随机提升

我正在尝试使用增强随机生成器使随机点均匀分布在平面上。我有以下链接可以在一个维度上进行操作:

在这里,它们用于boost::uniform_int<>生成int单一维度的数字。

但就我而言,我希望float在平面上生成二维数字。

是否有任何分布类型可以在二维中使用它?(我见过boost::uniform_on_sphere,但它适用于球面。)

0 投票
0 回答
110 浏览

c++ - 使用 boost 优化/检查绘制随机数

我已经完成了 Boost 的安装,并且(终于)在我的程序中使用了它。我想要的是能够生成

  1. 在 0 和 1 之间随机分布的数字
  2. 标准差为 1 的正态分布数

我通过以下头文件实现了这一点:

我有两个问题:

  1. 我的方法正确吗?到目前为止,我得到了想要的行为似乎是一致的,而且其他人似乎也这样做了
  2. 我需要模拟一个非常大的样本,因此我需要非常多的随机数,远远大于 10^9。有没有比我简单地调用 uniform() 和 normal() 的方法更有效的方法来实现这一点?
0 投票
1 回答
248 浏览

c++ - 如何重置 Boost::variate_generator 分布?

我正在尝试编写一个函数,该函数接受一个最小值和一个最大值,并在它们之间返回一个随机双精度值。我试图使用 Boost::variate_generator 来获得两个双精度之间的随机数,但问题是我无法更改它的分布,所以我必须在每次调用时创建一个新种子。如果我每次调用它时都创建一个新种子,它就违背了伪随机数生成器的目的。

有没有办法在下面得到这样的东西,Boost 不是必需的,它似乎给出了很好的结果。

0 投票
2 回答
2721 浏览

c++ - boost::uuids::random_generator 线程安全吗?

考虑使用g++ -std=c++11(GCC 4.7.2) 编译此函数:

getID从多个线程调用是否安全?

正如这里提到的,根据 C++11 标准,第一行的本地静态对象定义是线程安全的。问题是第二行boost::uuids::random_generator::operator()对同一对象的调用generator是否也是线程安全的。返回的 UUID 在它们在单个线程中的意义上是否是唯一的?