---
title: "Random"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/126212-random"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "learn"
published: "2005-04-12T09:11:45.000Z"
updated: "2005-04-12T09:32:09.000Z"
replies: 7
views: 345
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/126212-random"
---

# Random

## #1 — learn, 2005-04-12T09:11Z

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..."

Permalänk: https://www.webforum.nu/p/126212

## #2 — Peter S, 2005-04-12T09:24Z

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.

Permalänk: https://www.webforum.nu/p/1590803

## #3 — nitro2k01, 2005-04-12T09:27Z

/r Såg Peter's svar
Så här ska typomvandlingen ske:

```
int distance= (int)(Math.random() * (hi - lo) + lo);
```

Permalänk: https://www.webforum.nu/p/1590804

## #4 — learn, 2005-04-12T09:27Z

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?

Permalänk: https://www.webforum.nu/p/1590805

## #5 — nitro2k01, 2005-04-12T09:29Z

1) Vad vill du att programmet ska göra? 
2) Varför innehåller variabeln lo det högre värdet?

Permalänk: https://www.webforum.nu/p/1590806

## #6 — Peter S, 2005-04-12T09:31Z

> **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);

    }
```

 :)

Permalänk: https://www.webforum.nu/p/1590808

## #7 — Lime, 2005-04-12T09:31Z

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.

Permalänk: https://www.webforum.nu/p/1590809

## #8 — learn, 2005-04-12T09:32Z

detta

```
int distance= (int)(Math.random() * (hi - lo) + lo);
```

 fixade biffen, tack! givetvis ska lo va minst och hi störst...

Permalänk: https://www.webforum.nu/p/1590810

---

Tråden på webben: https://www.webforum.nu/amne/java/126212-random
