Muy buenas noches señores, en esta oportunidad deseo su ayuda en un programa que realize en Java. Se trata de un pequeño programa que arroja numeros aleatorios en cierto intervalo (sea este intervalo [a;b]), los almacena en un vector, y debe arrojar como respuesta numeros aleatorios diferentes, es decir, no se deben de repetir ninguno de ellos. Para esto use el compilador JCreator Pro 4.00 y el jdk 1.5.0
El problema esque el programa arroja los numeros aleatorios pero se repiten, revise en reiteradas ocasiones mi logica, no se en donde puede estar el error, espero que me puedan ayudar a solucionarlo.
Aqui les dejo el codigo:
/**
* @(#)Aleatorios.java
*
*
* @author
* @version 1.00 2008/1/27
*/


public class Aleatorios {
private int n;
int v[]=new int[100];
public Aleatorios(int _n)
{n=_n;
for(int x=0;x<n;x++)
{v[x]=0;}
}

void Producir_Numeros(int n,int a, int b)
{
int i=0;
int p;
while (i<n)
{
p=(int)(Math.random()*b);
if(p>=a)
{
int k=0;
while((p!=v[k])&&(k<n))
{
v[i]=p;
k++;
}
i++;
}
}
System.out.println("\nNumeros aleatorios generados con exito!");
System.out.println("\nLos numeros generados son: ");
for (int j=0;j<n;j++)
{System.out.println(v[j]);}
}
}

/**
* @(#)Principal.java
*
*
* @author
* @version 1.00 2008/1/27
*/


public class Principal {

public static void main(String[] argv)
{
int num,a1,b1;
System.out.println("\nCuantos elementos aleatorios desea? ");
num=CTeclado.readInt();
System.out.println("\nIngrese parametros del intervalo de donde seran sacados los numeros.");
System.out.println("\nCota Superior: ");
a1=CTeclado.readInt();
System.out.println("\nCota Inferior: ");
b1=CTeclado.readInt();
Aleatorios al=new Aleatorios(num);
al.Producir_Numeros(num,a1,b1);
}
}

Nota: CTeclado es una clase con metodos para leer diferentes tipos de variables, solo tengo el .class mas no el codigo. num, a1 y b1 son variables del tipo entero, asique CTeclado.readInt() puede ser reemplazado por alguna sentencia para leer enteros, en mi caso, yo desconozco dicha sentencia.

Agradezco de antemano su ayuda.