如何在 c 语言的 cooja 模拟器中拥有一个随时间变化的随机数?



我知道有类似的帖子。我都试过了。但这并不能回答我的问题。我已经尝试过由 c 提供的 srand,但它在 cooja 中不起作用。 我也试过#include "cfs/cfs.h"#include "cfs/cfs-coffee.h"。但这提供了静态随机数。

使用node_id初始化随机数生成器。

在 Contiki 中,应使用random_init()random_rand()而不是 C 库函数:

#include <sys/node-id.h>
/* ... */
random_init(node_id);
unsigned short r = random_rand();

编辑:这将在不同的节点上为您提供不同的随机数。如果您希望在不同的模拟运行中使用不同的随机数,则可以使用Cooja mote平台。它从simRandomSeed变量初始化 Contiki RNG,该变量是模拟的随机种子,每次都可以设置为不同的值(从命令行或在 .csc 文件中)。

如果您不使用 Cooja motes,并且不想在不同的模拟运行中分配不同的节点 ID,唯一的选择是通过外部接口获取微尘上的随机种子,例如通过串行端口发送并在节点上读取。

相关内容

最新更新