problema con programa en C

rodryboikot
23 de Abril del 2008
Mi programa tiene que sacar numeros aleatorio entre el 1 y el 50 sin repetir.esto es lo que hice yo:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
printf ("\n");
int i, n=6, aleatorio, P=1, U=49;

srand(time(0));

for (i = 0; i < n; i ++)
{
aleatorio = P+(int)(((U-P+1.0)*rand())/(RAND_MAX+1.0));
printf("%d ", aleatorio);
}
printf ("\n");
printf ("\n");
}

Y lo que les queria pedir es que me expliquen el significado de esta linea: aleatorio = P+(int)(((U-P+1.0)*rand())/(RAND_MAX+1.0)); la cogi por internet y no la entiendo muy bien.Y la otra cosa que les queria pedir es que me dijeran como hago para no repetir numeros,porque con lo que yo hice se repiten

Noel Solw
23 de Abril del 2008
// programa boikot.cpp
// written in Borland CPP ver 4.52

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>

int main()
{
const int mini = 0,maxi = 50;
int vector[maxi-mini+1];
for(int i = 0;i < maxi-mini+1;vector[i++] = 1);
randomize();
for(i = 0;i < 6;)
{
int num = mini + random(maxi-mini);
if(vector[num])
{
vector[num++] = 0;
cout << "[" << ++i << "] : " << num << endl;
}
}
cout << endl << "end of program - good bye ! ! ! " << endl;
return 0;
} // MAIN