如何在c语言的cooja模拟器中获得随时间变化的随机数?

如何在c语言的cooja模拟器中获得随时间变化的随机数?,c,contiki,cooja,C,Contiki,Cooja,我知道也有类似的帖子。我都试过了。但这并不能回答我的问题。我已经尝试过由c提供的srand,但它在cooja中不起作用。 我还尝试了#包括“cfs/cfs.h”,#包括“cfs/cfs coffee.h”。但它提供静态随机数。使用节点id初始化随机数生成器 在Contiki中,应该使用random\u init()和random\u rand()而不是C库函数: #include <sys/node-id.h> /* ... */ random_init(node_id); uns

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

使用
节点id
初始化随机数生成器

在Contiki中,应该使用
random\u init()
random\u rand()
而不是C库函数:

#include <sys/node-id.h>
/* ... */

random_init(node_id);
unsigned short r = random_rand();
#包括
/* ... */
随机初始化(节点id);
无符号短r=random_rand();
编辑:这将在不同节点上为您提供不同的随机数。如果希望在不同的模拟运行中使用不同的随机数,可以使用Cooja mote平台。它通过
simRandomSeed
变量初始化Contiki RNG,该变量是模拟的随机种子,您可以每次(从命令行或.csc文件)将其设置为不同的值


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

srand和rand在cooja中如何不工作?@Aplet123 rand正在工作,但在cooja中没有#include。我想使用这个库,因为它使用当前时间作为随机生成器的种子,如下所示:srand(time(0));但节点id是静态的,因此每次都会创建相同的随机数集。我每次都要一组不同的随机数。如果你每次都能分辨出随机数的话。所以我可以把它放在random_init中。哪个头文件包含simRandomSeed?由于我遇到错误:“simRandomSeed”未声明(此函数首次使用),您可以将其声明为
extern int simRandomSeed
,不幸的是,没有头文件。请你也看看这些问题好吗。