问题标签 [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 投票
0 回答
291 浏览

c++ - 英特尔 TBB 线程具有相同种子的线程安全随机数

我有一个函数对象,用于使用线程构建块并行化 for_each() 算法,

函数对象使用随机数生成器 RND,其运算符方法 () 生成随机数。

问题:我需要一个随机数生成器来 1)在函数对象中只初始化一次 2)应该是线程安全的,并且 3)可以提供相同的种子,以便获得相同的结果。

我不太了解在函数对象中生成线程安全的随机数生成器。我尝试使用我自己的随机生成器类(使用引擎、分发和生成器)(使用 boost 库),但我需要一些简单的东西,比如 erand() ?或类似的东西,我们不需要为此编写单独的代码。

请建议

0 投票
1 回答
971 浏览

c++ - 使用 boost::random 跨平台生成一致的随机数

我们在项目中使用 boost::random 已经有一段时间了。最近,一个失败的测试单元让我对它的一个特性产生了兴趣:不同版本的 Boost 生成的数字序列可能不同,这取决于使用的分布。

这种行为似乎在所有发行版中都不一致。大多数情况下,使用具有相同种子的 RNG 进行均匀分布会产生相同的结果。其他分布,如normal、和可能会显示这些差异。lognormalbinomialdiscrete

我整理了一个简单的 C++ 程序来显示这个问题:

这个简单的程序将显示 Boost 1.56(在 OSX 上运行)的不同数字序列:

或者使用 Boost 1.50(在 Ubuntu 12.10 上运行):

请注意,均匀分布按预期工作:即,相同的种子在两个版本上生成一致的数字序列。正态分布和离散分布的行为不同。

有没有办法来解决这个问题?即有不同的平台独立于增强版本生成完全相同的序列吗?

0 投票
3 回答
1496 浏览

c++ - 跨平台可重复数字生成器

我需要一个“随机”数字生成器,它为 Windows、Mac、Linux、iOS 和 Android 上的给定种子产生相同的结果。现在我尝试了,std::rand但遗憾的是 Windows 和 Mac 之间的结果不同。boost::random_int_generatorboost::mt19937

有谁知道在所有平台上可靠运行的(C++)实现?

编辑1:

更具体地说,boost::mt19937Windows 和 Mac 上的数字之间的差异表明,在 Windows 上会生成 (2) 个额外的数字块。它看起来很奇怪,因为大多数数字是相同的,这些块只存在于 Windows 上。

编辑2:

boost::mt19937在所有平台上可靠地工作。我们的问题不是那里的错误。

0 投票
1 回答
2461 浏览

c++ - MinGW-w64 gcc 上对 boost::random::random_device 构造函数和析构函数的未定义引用

我的操作系统是 Windows 7 64 位,我使用的 C++ 编译器是:

我使用以下方法安装了 Boost 1.60 版:

然后我使用 Boost.Random教程中的示例测试了它是否有效。

前两个一切都很好,但第三个给出了关于 boost::random::random_device 的链接器错误。我将代码最小化为只有这个:

我收到以下错误:

在这里,在 SO 上,我发现有类似问题的人将 -lboost_system 添加到标志中,但对我来说没有帮助。

有谁知道,为什么它不起作用?我检查了一下,我的 Boost 文件夹中有 random_device.hpp 标头,其中包含 random_device() 和 ~random_device() 的声明。

0 投票
2 回答
190 浏览

c++ - 提升随机数生成器的丢弃行为

我正在用适配器类包装 boost 随机数生成器来实现 Monte Carlo 例程。在对类的成员函数编写单元测试时,我假设 .discard(unsigned int N) 的行为是抽取 N 个随机数而不存储它们,从而推进 rng 的状态。升压代码是:

这支持了我的假设。但是,我发现 .discard(1) 产生的序列与没有丢弃的相同序列不是一个数字。编码:

输出

我对 .discard 如何运作的解释不正确吗?为什么前三个输出中的两个序列不同,然后相同?

(此代码在 cygwin 上的 msvc 19.00.23918 和 g++ 4.9.2 上编译,结果相同)。

0 投票
4 回答
109 浏览

php - 带有PHP的Boostrap表单,MySQL不将数据发送到数据库

我已经尝试调试这个很久了,不明白为什么它不向我的数据库发送数据。另外作为一个指示,我正在使用 Boostrap 并且此表单位于模态框内。有人可以帮帮我吗?我将包括我的 html 片段以及 php 代码。

代码

PHP

0 投票
1 回答
990 浏览

c++ - How to reuse and reinitialize c++ discrete_distribution in class?

I am writing a discrete distribution random number generator in a c++ class. The requirements are:

  1. I don't want to create a discrete_distribution object each time I use it. I know distribution object is lightweight, but my weight array is so long that the cost is still too high. Also, I need to use the distribution object in different functions in this class.
  2. I need to change the distribution (weight array) from time to time
  3. I don't know the exact distribution (weight array) when the class is constructed

Currently I have two solutions, after initialize random number engine with random_device rd; mt19937 engine; in class and engine(rd()) in initialize list.

One is to create the discrete_distribution object with discrete_distribution<> *d=new discrete_distribution<>(weight_array,weight_array+weight_array_size) and store the pointer in the class. Each time I call (*d)(engine) to generate a random number, and I just need to delete the distribution and make a new one to update the weight array.

Another way is to define discrete_distribution<> d in class and update weight array with d=discrete_distribution<>(weight_array,weight_array+weight_array_size), so that we can generate random number with d(engine) and don't need to worry about pointers.

But it seems that both ways are not classical way to use c++ objects. Are they wrong? Are there any drawbacks to write code this way?

Thanks

0 投票
1 回答
2666 浏览

c++ - 如何使用 Boost Random

我需要使用 Boost Random 生成随机数。

我试图遵循一般指南。

我提取了图书馆的文件。那么如果我想使用库的classes和objectj我应该怎么做呢?

首先我知道在程序中包含库。然后我必须编译库和program.cpp本身?(并且两者都使用相同的编译器 - 我使用的是 g++)。

我正在使用一个虚拟的ubuntu盒子。这是我第一次使用图书馆,所以我真的不知道。

0 投票
3 回答
519 浏览

html - 为什么我不能更改 CSS 上的导航链接颜色?

1) 为什么我不能更改 CSS 上的导航链接颜色?

我正在尝试将MENUTEST(导航链接)的颜色更改为白色,但它不起作用

2)在每个MENUTEST的文本上方添加一行白色(就像[u]但在上面)怎么做?

我在做什么错?

导航栏.php

和 navbar.css

..................................................

0 投票
0 回答
317 浏览

boost - Cmake 找不到 boost_randomConfig.cmake 文件

我正在安装内部软件。当我使用时,cmake我收到以下错误:

所以我检查了各自的目录,所需的文件不在那里。我安装 Boost 已经有一段时间了,但我记得构建它。

在安装内部软件之前,我安装了依赖项,其中包括sudo apt-get install libboost-all-dev.

我尝试通过执行强制cmake查找通过 pkg-manager 安装的版本

但我仍然遇到同样的错误。

我要么想要uninstall Boost v1.72.0要么获取boost_randomConfig.cmake boost_random-config.cmake文件。

谢谢您的帮助。