13. maj 2002 - 15:05Der er
7 kommentarer og 2 løsninger
math.random.
Som nyudklækket Æg indenfor computerprogrammering støder jeg hele tiden på problemer. Da det er lidt kedeligt at lave forudsigelige programmer, hvor værdierne er tastet ind på forhånd, ville det være mere spændende, hvis jeg med math.random() gav programmer mulighed for at vælge andre forskellige løsninger hver gang programmet kører. Dette gøres med Math.random(), problemmet er bare at værdien(variablen) kun kan ligge mellem 0,0 til 0,99.
Jeg er iøjeblikket i gang med at lave et lille program, som kan udregne prisen på et brev, afhængig af brevets vægt. Her er værdierne jo andre end mellem 0,0 til 0,99. Her taler man jo om 20 gram, 50 gram og hundrede gram... Spørgsmålet er så: Kan jeg ændre i math.random eller bruge en anden metode, så den for eksempel kunne skilne mellem 20,50 og 100 gram.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Du skal istedet for Math.random take fat i java.util.Random klassen der har flere muligheder for at få tilfældige tal ud, f.eks. gaussisk fordelte tilfældige tal, heltal, flydende tal etc. Du skal forvente at lave lidt skalering af det der kommer ud af din tilfældighedstals- generator. For at få tal fra x1 til x2 skal du transformere til x1+(x2-x1)*random.
Synes godt om
Slettet bruger
13. maj 2002 - 15:17#2
det vil sige at jeg skal importe java.util.Random i starten af programmet?
Random rand = new Random(); double x1 = -2.3; double x2 = 4.5; double x = x1+(x2-x1)*rand.nextDouble(); hvor du naturligvis indsætter dine grænser i stedet for x1 og x2.
aslan: sandsynlighederne for dine valg er ikke i overensstemmelse med en trunkering f.eks, ellers er det en ok løsning så længe du ikke har for mange udfald.
double rndom = Math.random()*3; // fra 0 til (men ikke med 3. int dice3 = Math.floor( rndom ); // 0, 1 eller 2 (ligeligt fordelt) int vegt = udfald[ dice3 ]; // 20, 50 eller 100
det kan så stables sammen til: int vegt = udfald[ Math.floor( Math.random()*3 ) ];
Hvis du synes der skal være flere breve af 20 gram kan du oprette flere 20 celler i arrayet og gange Math.random() med et større tal.
Ja, du skriver bare din nedre grænse i stedet for højresiden i x1 og ligeledes for størsteværdien i højresiden for x2.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.