示例#1
0
文件: mlgsl_randist.c 项目: ptrf/LCDE
CAMLprim value ml_gsl_ran_sample(value rng, value src, value dest)
{
  if(Tag_val(src) == Double_array_tag)
    gsl_ran_sample(Rng_val(rng), 
		   Double_array_val(dest), Double_array_length(dest),
		   Double_array_val(src), Double_array_length(src),
		   sizeof(double));
  else
    gsl_ran_sample(Rng_val(rng), 
		   (value *)dest, Array_length(dest),
		   (value *)src,  Array_length(src),
		   sizeof(value));
  return Val_unit;
}
void test_shuffle(void){
    int original[SIZE] = {1,2,3,4};
    int to_be_shuffled[SIZE] = {1,2,3,4};
    int draws[5];

    gsl_ran_sample(rng, draws, 5, original, SIZE, sizeof(int));
    printf("gsl_ran_sample\t[%d,%d,%d,%d]\t%d\t[%d,%d,%d,%d,%d]\n", 
            original[0], original[1], original[2], original[3],
            5,
            draws[0], draws[1], draws[2], draws[3], draws[4]
            );

    gsl_ran_choose(rng, draws, 3, original, SIZE, sizeof(int));
    printf("gsl_ran_choose\t[%d,%d,%d,%d]\t%d\t[%d,%d,%d]\n", 
            original[0], original[1], original[2], original[3],
            3,
            draws[0], draws[1], draws[2]
            );

    gsl_ran_shuffle(rng, to_be_shuffled, SIZE, sizeof(int));
    printf("gsl_ran_shuffle\t[%d,%d,%d,%d]\t[%d,%d,%d,%d]\n", 
            original[0], original[1], original[2], original[3],
            to_be_shuffled[0], to_be_shuffled[1], to_be_shuffled[2], to_be_shuffled[3]
            );
}
示例#3
0
void samp_k_from_n (int k, int n, int * a)
{
  printf("\nI got further.\n\n");
  int b[n];
  
  static gsl_rng *restrict r = NULL;
  
  if(r == NULL) { // First call to this function, setup RNG
    gsl_rng_env_setup();
    r = gsl_rng_alloc(gsl_rng_mt19937);
    r = gsl_rng_alloc(0);
  }
	
  /* sample k objects from an array of size n with replacement */
	printf("\n n = %d\n", n);		
  

	printf("\n\nZ\n\n");
	
  for (int i = 0; i < n; i++) 
    {
      b[i] = i;
    }
    
  printf("\n\nA\n\n");
  gsl_ran_sample (r, a, k, b, n, sizeof(int));
  printf("\n\nA2\n\n");
}