31 static double numStd(
int sampleSizeLowerBound) {
33 if (sampleSizeLowerBound < 6.0) {
35 }
else if (sampleSizeLowerBound < 16.0) {
43 long total,
bool withReplacement) {
45 if (withReplacement) {
46 return fmax(sampleSizeLowerBound +
47 numStd(sampleSizeLowerBound) * sqrt(sampleSizeLowerBound),
51 double fraction = (double)sampleSizeLowerBound / (
double)(total);
53 double gamma = -log(delata) / total;
55 fmax(1e-10, fraction + gamma +
56 sqrt(gamma * gamma + 2 * gamma * fraction)));
64 size_t mySize = samples.size();
65 for (
int i = mySize - 1; i >= 0; i--) {
66 int j = rand() % (i + 1);
68 samples[j] = samples[i];
76 size_t mySize = samples.size();
77 for (
int i = mySize - 1; i >= 0; i--) {
78 int j = rand() % (i + 1);
80 samples[j] = samples[i];
static double numStd(int sampleSizeLowerBound)
static void randomizeInPlace(Vector< Handle< KMeansDoubleVector >> &samples)
static double computeFractionForSampleSize(int sampleSizeLowerBound, long total, bool withReplacement)
static void randomizeInPlace(std::vector< Handle< KMeansDoubleVector >> &samples)