Avatar billede ttn- Nybegynder
01. januar 2004 - 22:58 Der er 8 kommentarer og
2 løsninger

Random vinder

Hejsa

Jeg har to strings, der hver indeholder et lille navn. Disse to hold skal dyste mod hinanden ved at se, hvem der vinder flest ud af 24 gange. Derudover vil det være rart, hvis den kunne have en odds funktion af en art, så den der var bedre har lettere ved at vinde end den dårligere.

Jeg leder ikke efter svaret, men mere en måde at gøre dette på.
Avatar billede arne_v Ekspert
01. januar 2004 - 23:04 #1
Math.random() returnerer er tilfældigt tal 0.0 <= x < 1.0

Så ved lige fordeling vil:

if(Math.random() < 0.5) {
  // #1 vinder
} else {
  // #2 vinder
}

kunne bruges.
Avatar billede arne_v Ekspert
01. januar 2004 - 23:05 #2
Hvis f.eks. #1 skal have p sandsynelighed for at vinde så ersttater du
bare 0.5 med p.
Avatar billede jakoba Nybegynder
01. januar 2004 - 23:08 #3
Det kan gøres på et utal antal måder.
den nemmeste er bare at bruge de der odds du har  A:B  hvor A og B er hver sin talværdi:
  double A = 2;  // odds er 2 : 2.5
  double B = 2.5;
  boolean winderErA = ( Math.floor( Math.random()*(A+B) ) ) > B );

det gentager du så 24 gange og ser hvem der vandt flest gange.

mvh JakobA
Avatar billede jakoba Nybegynder
01. januar 2004 - 23:10 #4
Ups. der var en ')' for meget
  boolean winderErA = ( Math.floor( Math.random()*(A+B) ) > B );
Avatar billede ttn- Nybegynder
01. januar 2004 - 23:19 #5
læg svar begge :)
Avatar billede arne_v Ekspert
01. januar 2004 - 23:21 #6
ok
Avatar billede jakoba Nybegynder
01. januar 2004 - 23:23 #7
Points bør gå til arne_v. jeg har lige opdaget endnu en fejl i min:
  boolean winderErA = ( Math.random()*(A+B) > B );
Avatar billede ttn- Nybegynder
01. januar 2004 - 23:37 #8
Lige én ting til:

Hvis jeg skal vil have udskrevet de enkelte resultater én efter én, hvad skal jeg så skrive?
Avatar billede arne_v Ekspert
01. januar 2004 - 23:43 #9
Det skal vel være noget a la:

int a = 0;
int b = 0;

for(int i = 0; i < 24; i++) {

if(Math.random() < 0.5) {
  a++;
  System.out.println("a vinder");
} else {
  b++;
  System.out.println("b vinder");
}

}
System.out.println("Resultat: " + a + "-" + b);
Avatar billede ttn- Nybegynder
01. januar 2004 - 23:49 #10
Takker. Her er jeres point!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester