c语言的cooja模拟器如何得到一个随时间变化的随机数?
How to have a random number which changes with time in cooja simulator in c language?
我知道有类似的帖子。我已经尝试了所有这些。但这并不能回答我的问题。我已经尝试过 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 微尘并且不想在不同的模拟运行中分配不同的节点 ID,唯一的选择是通过外部接口在微尘上获取随机种子,例如通过串口发送并在节点上读取。
我知道有类似的帖子。我已经尝试了所有这些。但这并不能回答我的问题。我已经尝试过 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 微尘并且不想在不同的模拟运行中分配不同的节点 ID,唯一的选择是通过外部接口在微尘上获取随机种子,例如通过串口发送并在节点上读取。