用随机值填充缓冲区

Fill a Buffer with random values C++

本文关键字:缓冲区 填充 随机      更新时间:2023-10-16

我接管了一个具有变量的程序:static uint_8t *buffer全局声明,我需要填充,但不仅仅是一个重复的值。它不必太"随机",只要完整且不重复即可。我使用这个缓冲区在硬盘上运行read10 scsi命令测试。我使用visual c++ 2012。提前感谢您的帮助!

如果随机性不太重要,您可以考虑使用类似std::rand的方便算法:

std::generate_n(buffer, BUFFER_SIZE, std::rand);

缓冲区的元素类型为unsigned意味着溢出是安全的。这里是一个示例,尽管我怀疑您的代码可能有点不同;)。

如果您不介意值是连续的,您可以使用std::iota:

#include <numeric>
std::iota(buffer, buffer + SIZE, 0);

这将用从0开始的连续值填充。

const size_t N = 100; // your number of elements
for(size_t i = 0; i < N; ++i)
{
    size_t tmp = i % std::limits<uint8_t>::max();
    buffer[i] = static_cast<uint_8t>(tmp)
}