用随机值填充缓冲区C++
我接管了一个带有变量的程序:static uint_8t*buffer全局声明,我需要用up填充,但不只是一个重复值。它不必太随机,只要充满,不重复。我使用这个缓冲区在硬盘上运行read10 scsi命令测试。我使用Visual C++ 2012。提前谢谢你的帮助如果随机性没有太大关系,你可能会考虑类似于STD::RAND之类的,用一个方便的算法:用随机值填充缓冲区C++,c++,visual-studio,C++,Visual Studio,我接管了一个带有变量的程序:static uint_8t*buffer全局声明,我需要用up填充,但不只是一个重复值。它不必太随机,只要充满,不重复。我使用这个缓冲区在硬盘上运行read10 scsi命令测试。我使用Visual C++ 2012。提前谢谢你的帮助
std::generate_n(buffer, BUFFER_SIZE, std::rand);
缓冲区的元素类型是无符号的,这意味着溢出是安全的。这里有一个例子,不过我怀疑您的代码可能有点不同如果随机性没有太大关系,你可能会考虑类似于STD::RAND之类的,用一个方便的算法:
std::generate_n(buffer, BUFFER_SIZE, std::rand);
缓冲区的元素类型是无符号的,这意味着溢出是安全的。这里有一个例子,不过我怀疑您的代码可能有点不同 如果不介意这些值是连续的,可以使用:
这将用从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)
}
这将用从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)
}