使用随机值C ++填充缓冲区

时间:2013-05-29 21:31:40

标签: c++ visual-studio

我接管了一个带有变量的程序: static uint_8t * buffer 全局声明我需要填充,但不能只填充一个重复值。它不必太“随机”,只是充分而不是重复。我正在使用此缓冲区在HDD上运行read10 scsi命令测试。我正在使用visual c ++ 2012.感谢您的帮助!

3 个答案:

答案 0 :(得分:7)

如果随机性无关紧要,您可以考虑使用std::rand之类的方法:

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

缓冲区的元素类型是无符号的这一事实意味着溢出是安全的。这是一个sample,虽然我怀疑你的代码可能有点不同;)。

答案 1 :(得分:1)

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

#include <numeric>

std::iota(buffer, buffer + SIZE, 0);

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

答案 2 :(得分: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)
}