Пример #1
0
decimal r_rand(const decimal& min,const decimal& max)
{
#ifdef USE_CGAL
	CGAL::Gmpfr m;
	mpfr_urandom(m.fr(),state,MPFR_RNDN);
	return r_round_preference((min>max)?decimal(m)*(min-max)+max:decimal(m)*(max-min)+min,true);
#else
	return (min>max)?r_rand()*(min-max)+max:r_rand()*(max-min)+min;
#endif
}
Пример #2
0
Value* RandFunction::evaluate(const Context& ctx) const
{
	decimal min=0;
	auto* minVal=dynamic_cast<NumberValue*>(getParameterArgument(ctx,0));
	if(minVal)
		min=minVal->getNumber();
	decimal max=0;
	auto* maxVal=dynamic_cast<NumberValue*>(getParameterArgument(ctx,1));
	if(maxVal)
		max=maxVal->getNumber();
	int count=1;
	auto* countVal=dynamic_cast<NumberValue*>(getParameterArgument(ctx,2));
	if(countVal)
		count=countVal->toInteger();
	auto* seedVal=dynamic_cast<NumberValue*>(getParameterArgument(ctx,3));
	int seed=time(nullptr);
	if(seedVal)
		seed=seedVal->toInteger();

	r_rand_seed(seed);

	QList<Value*> results;
	for(auto i=0; i<count; ++i)
		results.append(new NumberValue(r_rand(min,max)));

	return new VectorValue(results);
}
Пример #3
0
int main (void) 
{
	int Vect[ARRAY_SIZE], i,
		lastVal = 11, currSequStart = -1,
		maxSequence[2] = { 0, 0 }; /* { NbRepetition, Start } */

	srand(time(NULL));

	printf("Vecteur :\n");

	for (i = 0; i < ARRAY_SIZE; i++)
	{
		Vect[i] = r_rand(0, 10);

		printf("%d\t", Vect[i]);

		if (lastVal >= Vect[i]) /* RàZ */
		{
			currSequStart = i;
		}

		lastVal = Vect[i];

		if (maxSequence[0] < (i - currSequStart) + 1)
		{
			maxSequence[0] = (i - currSequStart) + 1;
			maxSequence[1] = currSequStart;
		}

	}
	printf("\n");

	printf("La plus longue sequence en ordre croissant est "
		"de %d et commence a l'index %d\n",
		maxSequence[0], maxSequence[1]);

	for (i = maxSequence[1]; i < maxSequence[1] + maxSequence[0]; i++)
	{
		printf("%d\t", Vect[i]);
	}
	printf("\n");
}