我应该使用多少个随机数发生器?

enz*_*m83 0 c++ random algorithm prng

如果应用程序的不同类需要提取一个或多个随机数,那么应该在哪里初始化随机数生成器以生成良好的随机序列?

特别是,我需要构建一些决策树来训练随机森林.每个决策树的构建包括以下步骤:

  1. 加载数据集(按多行数据组织).
  2. 随机选择此数据集中的某些行以构建新数据集.在树的生长期间,这个新数据集将逐渐分裂.
  3. 这个新数据集用于增长决策树:每个节点的创建需要随机选择这个新数据集的几行(在创建一个节点之前,你必须随机生成这个新数据集的一些小的不同子集) .

执行上面列出的三个步骤以构建每个决策树.刚刚描述的过程提供了随机数生成多次.例如,第二步应该确保每个决策树都使用与初始数据集略有不同的数据集进行训练,因此随机数生成器应该避免生成相同的数据集(或者在任何情况下,这种情况发生的可能性应该非常低) .

实质上,在这个过程中,我们可以确定两个随机源:

  • N随机数据集的生成,每个都用于训练单个决策树;
  • 在创建节点之前,必须M从给定数据集执行随机提取.

我应该使用多少个随机数发生器?由于我有一个实现随机森林的类,以及另一个实现决策树的类,我以为我会在第一个类(第一个随机源)中初始化一个随机数生成器,在第二个类中初始化另一个随机数生成器class(随机性的第二个来源).它是否正确?

一般来说,选择正确数量的伪随机数发生器的准则是什么?

Phi*_*ger 5

请记住,无论您使用何种计算机语言,生成的数字总是伪随机的.这意味着给定用于生成代的相同种子,您将始终获得相同的结果.编程语言中包含的所有随机数生成器已经大量开发并经过测试,以尽可能优化.一次随机函数就足够了.