コード例 #1
0
ファイル: monty_carlo_comp.cpp プロジェクト: diamog/RAfinal
int main(int argc, char* argv[]) {
  srand(time(NULL));
  assert(argc>3);
  std::ifstream in_str(argv[1]);
  if (!in_str)
    throw 1;
  float alpha = atof(argv[2]);
  s_t l = atoi(argv[3]);
  double pstar=0;
  std::clock_t start_ps = std::clock();
  for (s_t i =ceil(alpha*l);i<=l;i++) {
    pstar+=nChoosek(l,i)*pow(alpha,i)*pow(1-alpha,l-i);
  }
  std::cout<<pstar<<'\n';
  std::cout<<"Computing p* took "<<(std::clock()-start_ps)/(double)CLOCKS_PER_SEC<<"seconds\n";

  std::clock_t start_reading = std::clock();
  MyNum num;
  std::vector<MyNum> numbers;
  while (num.read(in_str)) {
    numbers.push_back(num);
  }
  std::cout<<"Reading in numbers took "<<(std::clock()-start_reading)/(double)CLOCKS_PER_SEC<<"seconds\n";

  std::clock_t start_running = std::clock();
  unsigned int m = 100000;
  unsigned int worked=0;
  for (int i=0;i<m;i++) {
    worked+=testSubsequence(numbers,l,alpha);
  }
  double p = worked*1.0/m;
  std::cout<<p<<'\n';
  if (p>pstar) 
    std::cout<<"YES\n";
  else
    std::cout<<"NO\n";
  std::cout<<"Running algorithm took "<<(std::clock()-start_running)/(double)CLOCKS_PER_SEC<<"seconds\n";

  return 0;
}
コード例 #2
0
ファイル: testTools.cpp プロジェクト: e-lulu/Bioinformatics
void testNChooseK() {
  TAP_TEST(nChoosek(1, 10) == 0, TEST_N_CHOOSE_K, "");
  TAP_TEST(nChoosek(1, 1) == 1, TEST_N_CHOOSE_K, "");
  TAP_TEST(nChoosek(5, 2) == 10, TEST_N_CHOOSE_K, "");
  TAP_TEST(nChoosek(8, 4) == 70, TEST_N_CHOOSE_K, "");
}