#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;
}