learnMedlem sedan jan. 20051 143 inlägg Jag försöker skapa en metod som gör att ett objekt rör på sig slumpmässigt. Borde inte detta funka?
/**
* Slowly move the square randomized
*/
public void moveRandom()
{
int hi = 10, lo = 50;
int distance= Math.random() * (hi - lo) + lo;
slowMoveHorizontal(distance);
slowMoveVertical(distance);
}
Felmeddelande: "Possible loss of precision" på raden "int result..."
Peter SMedlem sedan dec. 20025 484 inlägg 1. Varför skapar du lokala variabler som ej används?
2. "Loss of precision"-meddelandet kan du åtgärda genom att typomvandla uttrycket Math.random() * (hi - lo) + lo till en int innan tilldelning.
3. Vad innehåller distance?
Red./ Såg nu att du ändrat litet grand i koden.
/r Såg Peter's svar
Så här ska typomvandlingen ske:
int distance= (int)(Math.random() * (hi - lo) + lo);
learnMedlem sedan jan. 20051 143 inlägg Som synes är jag ingen hejare på java, men d brukar gå bra att testa sig fram.. :)
distance vill jag ska innehålla det tal som slumas fram... tokigt?
Peter SMedlem sedan dec. 20025 484 inlägg
nitro skrev:
vad menar du med detta?
Den ursprungliga koden såg ut enligt nedan:
/**
* Slowly move the square randomized
*/
public void moveRandom()
{
int hi = 10, lo = 50;
int [b]result[/b]= Math.random() * (hi - lo) + lo;
slowMoveHorizontal(distance);
slowMoveVertical(distance);
}
:)
LimeMedlem sedan sep. 2001837 inlägg Förlåt... men vad är det för fel på:
int lo = 0;
int hi = 100;
Random r = new Random();
// Slumpa en int mellan 0 och 99.
int distance = r.nextInt(hi-lo)+lo;
Det är betydligt snabbare än "riktig random" och om man går såhär så skapar man en ny random vajre gång.
Jag skulle skapa random-objektet som ett klassattribut eftersom det då ger en statistisk normalfördelning av integers baserat på den millisekund som randomobjektet är skapat.
learnMedlem sedan jan. 20051 143 inlägg detta
int distance= (int)(Math.random() * (hi - lo) + lo);
fixade biffen, tack! givetvis ska lo va minst och hi störst...