//**********************************************************************************************************************
SubSampleCommand::SubSampleCommand(){
try {
- abort = true;
- //initialize outputTypes
+ abort = true; calledHelp = true;
vector<string> tempOutNames;
outputTypes["shared"] = tempOutNames;
outputTypes["list"] = tempOutNames;
SubSampleCommand::SubSampleCommand(string option) {
try {
globaldata = GlobalData::getInstance();
- abort = false;
+ abort = false; calledHelp = false;
allLines = 1;
labels.clear();
//allow user to run help
- if(option == "help") { help(); abort = true; }
+ if(option == "help") { help(); abort = true; calledHelp = true; }
else {
//valid paramters for this command
int SubSampleCommand::execute(){
try {
- if (abort == true) { return 0; }
+ if (abort == true) { if (calledHelp) { return 0; } return 2; }
if (sharedfile != "") { getSubSampleShared(); }
if (m->control_pressed) { for (int i = 0; i < outputNames.size(); i++) { remove(outputNames[i].c_str()); return 0; } }
bool done = false;
int myrand;
while (!done) {
- myrand = (int)((float)(rand()) / (RAND_MAX / (thisSize-1) + 1));
+ myrand = int((float)(thisSize) * (float)(rand()) / ((float)RAND_MAX+1.0));
if (subset.count(names[myrand]) == 0) {
}
}
}else {
+
//randomly select a subset of those names to include in the subsample
for (int j = 0; j < size; j++) {
bool done = false;
int myrand;
while (!done) {
- myrand = (int)((float)(rand()) / (RAND_MAX / (thisSize-1) + 1));
+ myrand = int((float)(thisSize) * (float)(rand()) / ((float)RAND_MAX+1.0));
if (subset.count(names[myrand]) == 0) {
if (m->control_pressed) { delete order; return 0; }
//get random number to sample from order between 0 and thisSize-1.
- int myrand = (int)((float)(rand()) / (RAND_MAX / (thisSize-1) + 1));
+ int myrand = int((float)(thisSize) * (float)(rand()) / ((float)RAND_MAX+1.0));
int bin = order->get(myrand);
bool done = false;
int myrand;
while (!done) {
- myrand = (int)((float)(rand()) / (RAND_MAX / (names.size()-1) + 1));
+ myrand = int((float)(names.size()) * (float)(rand()) / ((float)RAND_MAX+1.0));
if (subset.count(names[myrand]) == 0) { //you are not already added
if (groupMap->getGroup(names[myrand]) == Groups[i]) { subset.insert(names[myrand]); break; }
bool done = false;
int myrand;
while (!done) {
- myrand = (int)((float)(rand()) / (RAND_MAX / (names.size()-1) + 1));
+ myrand = int((float)(names.size()) * (float)(rand()) / ((float)RAND_MAX+1.0));
if (subset.count(names[myrand]) == 0) { subset.insert(names[myrand]); break; }
}
if (m->control_pressed) { delete order; return 0; }
//get random number to sample from order between 0 and thisSize-1.
- int myrand = (int)((float)(rand()) / (RAND_MAX / (thisSize-1) + 1));
+ int myrand = int((float)(thisSize) * (float)(rand()) / ((float)RAND_MAX+1.0));
int bin = order->get(myrand);
if (m->control_pressed) { delete order; return 0; }
//get random number to sample from order between 0 and thisSize-1.
- int myrand = (int)((float)(rand()) / (RAND_MAX / (thisSize-1) + 1));
+ int myrand = int((float)(thisSize) * (float)(rand()) / ((float)RAND_MAX+1.0));
int bin = order->get(myrand);