Pessoal, preciso fazer um random de -0.9 a 0.9 para fazer um cálculo de uma rede neural.
O que consegui foi utilizar os métodos a seguir:// Gera números aleatórios para os pesos sinápticos
public static double geraRandom(){
Random random = new Random();
double num = random.nextFloat()%0.9;
return num;
}
// Gera um random de booleano para fazer o negativo e positivo
public static void geraRandomBoolean(){
Random random = new Random();
negpos = random.nextBoolean();
}
// Gera os pesos da camada de entrada
public static void geraPesosCamEntrada(){
alimentaNeuronios();
int n=1;
double valor=0;
while ( n!=0){
geraRandomBoolean();
if (negpos == true){
valor = geraRandom();
}else{
valor = geraRandom()*(-1);
}
System.out.println(valor);
n=Keyboard.readInt();
}
}
Fiz algumas gambiarras para conseguir números negativos, pois só consigo fazer o random acima de 0. Então criei outro randon booleano que conforme o resultado ele multiplica por -1.
Até aí tudo bem, mas o que está ocorrendo é que para o método Random ele pega como seed os milisegundos do relógio [b]public Random() { this(System.currentTimeMillis()); } então o que me ocorre é que se eu gero ele assim direto, ele adiciona muitas linhas com o mesmo número, o intervalo entre ele repete o mesmo código umas 100 vezes antes de mudar. O que consegui foi fazer que a cada número gerado, eu tenha que apertar uma tecla, para que seja gerado o próximo, daí ele gera diferentes pois não está no mesmo milisegundo.
Tem como fazer algo para que ele espere uns 10 milisegundos antes de gerar o próximo número? dar uma pausa com tempo programado para o sistema.[/b]
Conseguiram entender? hehe
Obrigado.
Att.
Alexander
[size="11"][color="red"]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia: