Duvida com random em string

Fala ai pessoal, sou iniciante em java e gostaria de saber como eu posso pegar 16 digitos aleatorios dentro dessa string:

String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

grato

Usa o método String.charAt(int) passando como parâmetro um número aleatório que seja, no máximo, String.length()

http://www.guj.com.br/posts/list/95305.java

consegui fazer o seguinte:

import java.util.Random;

public class RandomString
{

	public static void main(String[] args) 
	{
		String str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		
		StringBuffer sb=new StringBuffer();
		Random random = new Random();

		for (int i=0;i<16;++i)
			sb.append(str.charAt(random.nextInt(16)));
		
		System.out.print(sb.toString());
	}

}

Eu consegui fazer, so nao entendi bem porque no random.nextInt() o valor nao pode passar de 38, um valor acima disso retorna um erro no compilador…

"sb.append(str.charAt(random.nextInt(16))); "

Tenta isso: sb.append(str.charAt(random.nextInt(str.length() - 1)));

Ai ele vai pegar qualquer valor dentro da String.

E vc se quiser jogar isso em uma String normal, é só usar str += str.charAt(random.nextInt(str.length() - 1));

Ele concatena um char no final da string.

consegui, muito obrigado !

o pessoal é ligeiro, o tempo que eu fui fazer já mandaram a resposta…

de qq forma, vou postar um outro jeito de fazer…

public class Cadeia { public static void main(String [] args) { String cadeia = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for (int i = 0; i < 16; i++){ double rand = Math.round(Math.random()*35); int letra = (int)rand; System.out.println((i+1) + ". " + cadeia.charAt(letra)); } } }