• 2
  • 3
2021-03-12, 16:49
  #25
Medlem
Citat:
Ursprungligen postat av Math-Nerd
Funkar.
Svar
Kod:
{12999/40000, 14999/40000, 18999/40000, 20999/40000, 24999/40000}
Ok, men då gör det inte vad jag trodde det skulle göra. Jaja svårt att programmera Mathematica utan Mathematica
Citera
2021-03-12, 16:54
  #26
Medlem
Citat:
Ursprungligen postat av Dr-Nej
Ok, men då gör det inte vad jag trodde det skulle göra. Jaja svårt att programmera Mathematica utan Mathematica
Det kräver sin vana
Men jag tror du är väldigt nära (Mathematica)lösningen.
Ser man "fantomerna" skriva på StackExchange brukar det sluta med en rad bara med @, & och #…

(I min ungdom loggade jag in och konfigurerade konfig-skript i Unix utan skärm. Det var en utmaning… Men vad göra när OS inte "adresserar" skärmen… Det gällde att veta exakt vilken rad och vilken position saker och ting stod på. Det gick...)
Citera
2021-03-12, 16:57
  #27
Medlem
Citat:
Ursprungligen postat av Dr-Nej
Ser korrekt ut, men det är ju inte alls interaktivt.

Kan ju förklara idén bakom mitt script så kan du säkert översätta det till Mathematica: Om sannolikheten att lag i vinner är p_i så är sannolikheten att exakt r av våra lag vinner koefficienten för t^r i polynomet (tp_1+(1-p_1))(tp_2+(1-p_2))...(tp_n+(1-p_n)). Det känns som något som borde bli elegantare även i Mathematica.
Då har de inte haft generositeten att släppa på internaktivitet för "icke-kunder", vilket är tråkigt (det är så man får nya kunder, tror jag, genom att pröva på). Men, men, ...
Citera
2021-03-12, 16:58
  #28
Medlem
Citat:
Ursprungligen postat av Math-Nerd
Det kräver sin vana
Men jag tror du är väldigt nära (Mathematica)lösningen.
Ser man "fantomerna" skriva på StackExchange brukar det sluta med en rad bara med @, & och #…

(I min ungdom loggade jag in och konfigurerade konfig-skript i Unix utan skärm. Det var en utmaning… Men vad göra när OS inte "adresserar" skärmen… Det gällde att veta exakt vilken rad och vilken position saker och ting stod på. Det gick...)
Kanske var det bara en saknad parantes?
ps={35, 40, 50, 55, 65}/100;
x=3;

f[t_]=Times @@ (ps*t + (1-ps));
g[t_]=Normal[Series[f[t],{t,0,x-1}]];

1-g(1)
Citera
2021-03-12, 17:01
  #29
Medlem
Citat:
Ursprungligen postat av Dr-Nej
Kanske var det bara en saknad parantes?
ps={35, 40, 50, 55, 65}/100;
x=3;

f[t_]=Times @@ (ps*t + (1-ps));
g[t_]=Normal[Series[f[t],{t,0,x-1}]];

1-g(1)
Det gick bättre. Notera dock att, vilket du säkert redan vet och det måste vara c/p, 1-g(1) --> 1-g[1]
Citera
2021-03-14, 19:14
  #30
Medlem
Sen på bollen förvisso men här är facit på enkast möjliga sätt: :-)

Kod:
(display ((lambda (list wins)
    (let zoo ([ls list][i wins])
      (if (and (null? ls) (<= i 0))
        1
        (if (null? ls)
          0
          (+ (* (car ls) (zoo (cdr ls) (- i 1)))
             (* (- 1 (car ls))(zoo (cdr ls) i))))))) '(.35 .4 .5 .55 .65) 3))
Citera
2021-03-14, 19:44
  #31
Medlem
nerdnerds avatar
Citat:
Ursprungligen postat av Corsendonk
Sen på bollen förvisso men här är facit på enkast möjliga sätt: :-)

Kod:
(display ((lambda (list wins)
    (let zoo ([ls list][i wins])
      (if (and (null? ls) (<= i 0))
        1
        (if (null? ls)
          0
          (+ (* (car ls) (zoo (cdr ls) (- i 1)))
             (* (- 1 (car ls))(zoo (cdr ls) i))))))) '(.35 .4 .5 .55 .65) 3))
LISP?! Var ett tag sen. Najs.
Citera
2021-03-15, 16:12
  #32
Medlem
Citat:
Ursprungligen postat av Corsendonk
Sen på bollen förvisso men här är facit på enkast möjliga sätt: :-)

Kod:
(display ((lambda (list wins)
    (let zoo ([ls list][i wins])
      (if (and (null? ls) (<= i 0))
        1
        (if (null? ls)
          0
          (+ (* (car ls) (zoo (cdr ls) (- i 1)))
             (* (- 1 (car ls))(zoo (cdr ls) i))))))) '(.35 .4 .5 .55 .65) 3))
Imponerande mängd paranteser

Här är ett annat "enkelt" sätt att göra det på utan datoralgebra:

sum $ drop 3 $ foldl (\a b -> zipWith (\c d -> b * c + d - b * d) (0:a) $ a++[0]) [1] [0.35, 0.40, 0.50, 0.55, 0.65]

Spelet "gissa språket" kan fortsätta.
Citera
2021-03-15, 18:31
  #33
Medlem
Citat:
Ursprungligen postat av Dr-Nej
Imponerande mängd paranteser

Här är ett annat "enkelt" sätt att göra det på utan datoralgebra:

sum $ drop 3 $ foldl (\a b -> zipWith (\c d -> b * c + d - b * d) (0:a) $ a++[0]) [1] [0.35, 0.40, 0.50, 0.55, 0.65]

Spelet "gissa språket" kan fortsätta.

Haskell!
Citera
2021-03-15, 19:04
  #34
Medlem
Citat:
Ursprungligen postat av Corsendonk
Haskell!
Rätt! Här kommer en rekursiv och läsbar variant (antar att det är något sådant din gör, jag pratar inte lisp), sen får det räcka:

f 0 _ = 1
f _ [] = 0
f n (p:l) = p * f (n - 1) l + (1-p) * f n l

f 3 [0.35, 0.40, 0.50, 0.55, 0.65]
Citera
2021-03-15, 20:09
  #35
Medlem
Citat:
Ursprungligen postat av Dr-Nej
Rätt! Här kommer en rekursiv och läsbar variant (antar att det är något sådant din gör, jag pratar inte lisp), sen får det räcka:

f 0 _ = 1
f _ [] = 0
f n (p:l) = p * f (n - 1) l + (1-p) * f n l

f 3 [0.35, 0.40, 0.50, 0.55, 0.65]
Jag väntar med spänning på versionen i "ML" eller vad det hette, språket som man läste som arabiska (åt fel håll) och som Hörmander var en stor förespråkare av. Kanske språket aldrig fick fäste? Jag minns det som mycket kryptiskt. Jag kommer inte ihåg vad det var bra på, men om Hörmander gillade det måste det haft styrkor.
Citera
2021-03-15, 20:27
  #36
Medlem
Citat:
Ursprungligen postat av Dr-Nej
Rätt! Här kommer en rekursiv och läsbar variant (antar att det är något sådant din gör, jag pratar inte lisp), sen får det räcka:

f 0 _ = 1
f _ [] = 0
f n (p:l) = p * f (n - 1) l + (1-p) * f n l

f 3 [0.35, 0.40, 0.50, 0.55, 0.65]

Typ så!
Citera
  • 2
  • 3

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in