我正在测试一个使用UDP/TCP将数据包发送到远程服务器的网络程序,为此,我想生成一些随机字节流.
这是功能:
unsigned char *gen_rdm_bytestream(int num_bytes)
{
unsigned char *stream = malloc(num_bytes);
/*
* here how to generate?
*/
return stream;
}
Run Code Online (Sandbox Code Playgroud)
对于每个字节,您可以调用随机数生成器函数.C标准提供了该功能rand
.在使用之前,您应该通过调用来初始化随机序列srand
.
gen_rdm_bytestream
可能看起来像那样:
#include <stdlib.h>
#include <time.h>
unsigned char *gen_rdm_bytestream (size_t num_bytes)
{
unsigned char *stream = malloc (num_bytes);
size_t i;
for (i = 0; i < num_bytes; i++)
{
stream[i] = rand ();
}
return stream;
}
srand ((unsigned int) time (NULL));
Run Code Online (Sandbox Code Playgroud)
由于stream
是无符号的,如果返回的值rand
大于UCHAR_MAX
,则将减少(模数UCHAR_MAX
).因此,您将获得0到255之间的伪随机数.