-rw-r--r-- 570 cryptattacktester-20230614/bruteforce2_prob.cpp raw
#include <cassert> #include "bruteforce2_prob.h" using namespace std; bigfloat bruteforce2_prob(const vector<bigint> &params,const vector<bigint> &attackparams) { bigint n = params.at(0); bigint k = params.at(1); bigint w = params.at(2); bigint iters = attackparams.at(0); bigint successes = 0; for (bigint v = 0;v <= w;++v) { bigint binkv = binomial(k,v); iters -= binkv; successes += binkv*binomial(n-k,w-v); assert(iters >= 0); if (iters == 0) break; } assert(iters == 0); return bigfloat(successes)/bigfloat(binomial(n,w)); }