jukaukor

apinaveikkaus.jl

Dec 11th, 2020 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. # Julia-ohjelma apinaveikkaus.jl
  2. # Monivalintatehtävän apinaveikkaus - arvaamalla
  3. # Esitetään n kysymystä
  4. # Kussakin kysymyksessa on m vaihtoehtoa, joista vain yksi on oikea
  5. # Lasketaan apinaveikkauksen todennäköisyydet oikeiden vastausten määrille
  6. # sekä tätä paremmille tai huonommille veikkauksille
  7. # Laskenta perustuu binomitodennäköisyyteen
  8. # Juhani Kaukoranta 11.12.2020
  9.  
  10. function kysely()
  11. println("anna monivalintakysymysten lukumäärä ")
  12. ntxt = readline()
  13. n = parse(Int,ntxt)
  14. println("Anna yksittäisen kysymyksen eli osion vastausvaihtoehtojen lukumäärä ")
  15. ntxt = readline()
  16. m = parse(Int,ntxt)
  17. # oikean todennäköisyys p,väärän todennäköisyys 1-p
  18. p = 1.0/m
  19. println("Kussakin osiossa oikean vastauksen todennäköisyys = ",p)
  20. end
  21.  
  22. function tasan(n,m,k)
  23. # tasan k oikein
  24. p = 1.0/m # kunkin osion vaihtoehtojen määrä
  25. return binomial(n,k)*p^k*(1-p)^(n-k)
  26. end
  27.  
  28. function paremmin(n,m,k)
  29. # apinaveikkaus paremmin kuin k oikein
  30. p = 1.0/m # kunkin osion vaihtoehtojen määrä
  31. if k == n
  32. return 0
  33. end
  34. summa = 0
  35. for i = k+1:n
  36. summa += binomial(n,i)*p^i*(1-p)^(n-i)
  37. end
  38. return summa
  39. end
  40.  
  41. function huonommin(n,m,k)
  42. # huonommin kuin k oikein
  43. p = 1.0/m # kunkin osion vaihtoehdojen määrä
  44. if k == 0
  45. return 0
  46. end
  47. sum = 0
  48. for i = 0 : k-1
  49. sum += binomial(n,i)*p^i*(1-p)^(n-i)
  50. end
  51. return sum
  52. end
  53.  
  54. function apinaveikkaustaulukko(n,m)
  55. # n kysymystä, kussakin m vaihtoehtoa joista yksi oikein
  56. p = 1.0/m # kunkin osion oikean vastauksen todennäköisyys
  57. println("Jos apina veikkaisi, saataisiin todennäköisyystaulukko:")
  58. println()
  59. @printf("%s %s %s %s\n","tulos", "tasan","paremmin","huonommin")
  60. for k = 0 : n
  61. @printf("%2d %5.5f %5.5f %5.5f\n",k,tasan(n,m,k), paremmin(n,m,k),huonommin(n,m,k))
  62. end
  63. println("Odotusarvo apinaveikkauksen oikeiden vastausten määräksi = ",p*n)
  64. end
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
Advertisement
Add Comment
Please, Sign In to add comment