Gab*_*iMe 18 c++ windows winapi
我有这个大字符数组需要填充高频率的随机字节.我想知道除了天真的方式(使用for循环 - 用随机字节填充每个单元格)之外是否有更快的方法来执行此操作.对值的随机质量没有要求.任何"随机"垃圾都可以.平台是窗户
wor*_*rty 20
真随机(仅限Unix):
int fd = open("/dev/random", O_RDONLY);
read(fd, your_buffer, buffer_size);
Run Code Online (Sandbox Code Playgroud)
不完全随机(仅限Unix):
int fd = open("/dev/urandom", O_RDONLY);
read(fd, your_buffer, buffer_size);
Run Code Online (Sandbox Code Playgroud)
恒定随机(除非你使用srand(time(NULL))
,便携式):
for(size_t i = 0; i < buffer_size; i++)
your_buffer[i] = rand() % 256;
Run Code Online (Sandbox Code Playgroud)
或类似的东西:
memcpy(your_buffer, (void*)memcpy, buffer_size);
Run Code Online (Sandbox Code Playgroud)
取决于您使用的是 Linux 还是 Windows,但在 Linux 上从 /dev/random 执行 memcpy 应该可以。
在 Windows 上,您可以使用 CryptGenRandom 用随机数据填充缓冲区:http : //msdn.microsoft.com/en-us/library/aa379942.aspx。显然,这相当于从 /dev/random 读取数据的 Windows。Python 使用它OS.urandom
在 Windows 上实现其功能:http : //en.wikipedia.org/wiki/CryptGenRandom