Dúvidas sobre random()

5 respostas
_

Bem, sou iniciante em Java e tenho algumas duvidas.
preciso gerar um vetor de N posições e DESordenar os índices em cada posição do vetor. Ex: um usuario vai entrar um numero limitante 10. então terei int A [] = new int[10];
mas como usar o Math.random() para que cada posição do vetor contenha um índice (não repetido), ou seja, quero gerar uma lista desordenada, pois estou implementando o algoritmo de QuickSort.

agradeço a quem ajudar.

5 Respostas

T

bom....
vamos lá....

1-vc não poderá adcionar tipos primitivos em um vector... int ... é um tipo privimito... entaum use Integer
Integer[] a = new Integer[10];

2- antes de acionar o interio ao vector teste... se ele já existe... o código fica algo mais ou menos assim
Vector v = new Vector();
Integer temp = null;
while (v.size() < 10) {
   temp = new Integer((int)Math.floor(Math.random()*10))
   if (!v.contains(temp))
      v.add(temp);
}
H

Tente o seguinte:

int A[] = new int[10];
Vector v = new Vector();
for(;v.size() < 10;)
{
  Integer n = new Integer(random.nextInt(10));
  if(v.contains(n))
    continue;
  v.addElement(n);
}
for(int i = 0; i < 10; i++)
  A[i] = ((Integer) v.elementAt(i)).intValue();

Obs. não testei o código.

T

só comentando o código… que eu eskeci de fazer antes…

ele entra num loop… só sia dele quando tiver 10 itens dentro do VETOR…

dentro do loop ele coloca um valor de 1 a 10 dentro do temp

este valor ele testa se já existe no vetor… se já existe… ele não adiciona… c não existe… ele adciona… e fica fazendo isso… ate ter colocado os 10

T

“hipersoft”:
Tente o seguinte:

int A[] = new int[10];
Vector v = new Vector();
for(;v.size() < 10;)
{
  Integer n = new Integer(random.nextInt(10));
  if(v.contains(n))
    continue;
  v.addElement(n);
}
for(int i = 0; i < 10; i++)
  A[i] = ((Integer) v.elementAt(i)).intValue();

Obs. não testei o código.

só não entendi uma coisa deste código… quem é a variavel random … que vc xama o método .nextInt(10) ??

H

Para gerar sequências estocásticas:

Random random = new Random();

Para gerar sequências pseudoaleatórias repetidas:

Random random = new Random(5);

Criado 13 de março de 2004
Ultima resposta 14 de mar. de 2004
Respostas 5
Participantes 3