0

我正在尝试使用 mt19937 在 Veins 上为我的节点/车辆类生成(良好的)随机。当我为每辆车使用一个 mt19937 时,他可以工作,但是当我设置为静态(所有车一个 mt19937)时,他不工作

static mt19937 mt;

使用 mt 时出现一个错误:

uniform_int_distribution <int> unif_dist(1, 100);
...
return unif_dist(mt);

错误:

网络设置期间模块 (cModule) vehDist_rsu (id=48) 出错:找不到类“Veins::ObstacleControl”——可能其代码未链接,或者该类未使用 Register_Class() 注册,或者在模块和通道的情况,使用 Define_Module()/Define_Channel()。

网络清理期间出错:模型错误:ASSERT:条件 vect[i]==NULL false 在函数 deleteNetwork,csimulation.cc 第 437 行。

我尝试用12解决,但没有奏效。

4

1 回答 1

0

我将我的 Veins 更新为 Veins 4.4,在 BaseWaveApplLayer.h 中将 mt19937 设置为静态:

static mt19937 mt;

在我的车辆类别中定义他:

mt19937 BaseWaveApplLayer::mt_veh;

并在 BaseWaveApplLayer 类中使用他:

uniform_int_distribution <int> dist(0, 100);
int valueSelected = dist(mt_veh);

感谢所有帮助:)!

于 2016-10-12T19:03:32.963 回答