33 lines
852 B
C++
33 lines
852 B
C++
|
#include "assistant.h"
|
||
|
|
||
|
bool random_file(const std::string& file, size_t size)
|
||
|
{
|
||
|
if (file.empty() || size == 0) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
std::ofstream ofs(file, std::ios::binary | std::ios::trunc);
|
||
|
if (!ofs) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
std::random_device rd;
|
||
|
std::mt19937_64 gen(rd());
|
||
|
std::uniform_int_distribution<int> dis(0, 255);
|
||
|
|
||
|
const size_t buffer_size = 4096;
|
||
|
std::vector<unsigned char> buffer(buffer_size);
|
||
|
|
||
|
for (size_t remaining = size; remaining > 0;) {
|
||
|
size_t chunk = std::min(remaining, buffer_size);
|
||
|
|
||
|
for (size_t i = 0; i < chunk; ++i) {
|
||
|
buffer[i] = static_cast<unsigned char>(dis(gen));
|
||
|
}
|
||
|
if (!ofs.write(reinterpret_cast<const char*>(buffer.data()), chunk)) {
|
||
|
return false;
|
||
|
}
|
||
|
remaining -= chunk;
|
||
|
}
|
||
|
return true;
|
||
|
}
|