Ejemplo n.º 1
0
int main()
{ RNG *foo;
  int i;
  foo = rng_create();
  printf("Five uniform random numbers\n");
  for (i=0; i < 5; i++)
      printf("%f ", rng_uniform01(foo));
  printf("\n");
  printf("Five Gaussian random numbers\n");
  for (i=0; i < 5; i++)
      printf("%f ", rng_gaussian(foo, 0.0, 1.0));
  printf("\n\n");
  rng_destroy(foo);

  RAN1_SeedRandom((long)time(NULL));
    printf("Five uniform random numbers (ran1 api)\n");
  for (i=0; i < 5; i++)
      printf("%f ", RAN1_SimpleRandom());
  printf("\n");
  printf("Five Gaussian random numbers (ran1 api)\n");
  for (i=0; i < 5; i++)
      printf("%f ", RAN1_GaussianRandom(0.0, 1.0));
  printf("\n");
  return(0);
}
Ejemplo n.º 2
0
void Hedcut::sample_initial_points(cv::Mat & img, int n, std::vector<cv::Point2d> & pts)
{
	//create n points that spread evenly that are in areas of black points...
	int count = 0;

	cv::RNG rng_uniform(time(NULL));
	cv::RNG rng_gaussian(time(NULL));
	cv::Mat visited(img.size(), CV_8U, cv::Scalar::all(0)); //all unvisited

	while (count < n)
	{
		//generate a random point
		int c = (int)floor(img.size().width*rng_uniform.uniform(0.f, 1.f));
		int r = (int)floor(img.size().height*rng_uniform.uniform(0.f, 1.f));

		//decide to keep basic on a probability (black has higher probability)
		float value = img.at<uchar>(r, c)*1.0/255; //black:0, white:1
		float gr = fabs(rng_gaussian.gaussian(0.8));
		if ( value < gr && visited.at<uchar>(r, c) ==0) //keep
		{
			count++;
			pts.push_back(cv::Point(r, c));
			visited.at<uchar>(r,c)=1;
		}
	}

	if (debug)
	{
		cv::Mat tmp = img.clone();
		for (auto& c : pts)
		{
			cv::circle(tmp, cv::Point(c.y, c.x), 2, CV_RGB(0, 0, 255), -1);
		}
		cv::imshow("samples", tmp);
		//cv::waitKey();
	}
}
Ejemplo n.º 3
0
double RAN1_GaussianRandom(double m, double v) 
{ return rng_gaussian(&_ran1_rng, m, v); }