```
SELECT fuzzBits(toFixedString('', 200), 0.5) FROM system.numbers FORMAT Null
```
{
        UInt8 res = 0;
        for (int i = 0; i < 8; ++i)
        {
            UInt8 rand8 = rand;
            rand >>= 8;
            res <<= 1;
            res |= (rand8 < prob * (1u << 8));
        }
        return res;
    }
    void fuzzBits(const char8_t * ptr_in, char8_t * ptr_out, size_t len, double prob)
    {
        pcg64_fast rng(randomSeed()); 
        for (size_t i = 0; i < len; ++i)
        {
            UInt64 rand = rng();
            auto mask = getXorMask(rand, prob);
            ptr_out[i] = ptr_in[i] ^ mask;
        }
    }
class FunctionFuzzBits : public IFunction
{
public:
    static constexpr auto name = "fuzzBits";
    static FunctionPtr create(ContextPtr) { return std::make_shared<FunctionFuzzBits>(); }
    String getName() const override { return name; }
    bool isVariadic() const override { return false; }
    bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & ) const override { return true; }
    size_t getNumberOfArguments() const override { return 2; }