コード例 #1
0
ファイル: poisson_generator.cpp プロジェクト: wsong83/datagen
/* integers in poisson distribution
 * mean:    The mean of the poisson distribution
 */
uint32_t random_uint_poisson(double mean) {
  assert(mean > 0);

  // get the random distribution
  boost::random::poisson_distribution<uint32_t, double> ranGen(mean);
  return ranGen(gen32);  
}
コード例 #2
0
ファイル: poisson_generator.cpp プロジェクト: wsong83/datagen
/* doubles in exponential distribution
 * lambda:   reverse mean
 */
double random_double_exponential(double lambda) {
  assert(lambda > 0);

  // get the random distribution
  boost::random::exponential_distribution<double> ranGen(lambda);
  return ranGen(genDouble);
}
コード例 #3
0
ファイル: rprimegen.c プロジェクト: GoodiesHQ/RPrimeGen
void genpair(){
	bool hitmax	= FALSE;
	impossible	= FALSE;
	ranGen(max1);
	if(mpz_cmp(rndm, min1) < 0)
		mpz_add(rndm, rndm, min1);
	mpz_set(num1, rndm);

	ranGen(max2);
	if(mpz_cmp(rndm, min2) < 0)
		mpz_add(rndm, rndm, min2);
	mpz_set(num2, rndm);
	do{
		mpz_gcd(_gcd, num1, num2);
		if(!mpz_cmp_ui(_gcd, 1)){
			rprime	= TRUE;
		}else{
			if(!mpz_cmp(num2, max2)){
				if(!hitmax){
					mpz_set(num2, min2);
					hitmax		= TRUE;
				}else{
					impossible	= TRUE;
				}
			}
			mpz_add_ui(num2, num2, 1);
		}
	}while(!rprime && !impossible);
	rprime = FALSE;
}