fork download
  1. rdice = function(n) {
  2. floor(runif(n,1,7))
  3. }
  4.  
  5. experiment1 = function(max) {
  6. iter = 0
  7. freq = rep(0, 6)
  8. while(iter < max) {
  9. dice1 = rdice(1)
  10. dice2 = rdice(1)
  11. if (dice1 == 6 || dice2 == 6) {
  12. freq[dice1] = freq[dice1] + 1
  13. freq[dice2] = freq[dice2] + 1
  14. freq[6] = freq[6] - 1
  15. iter = iter + 1
  16. }
  17. }
  18. freq / max
  19. }
  20.  
  21. experiment2 = function(max) {
  22. iter = 0
  23. freq = rep(0, 6)
  24. while(iter < max) {
  25. dice1 = rdice(1)
  26. if (dice1 == 6) {
  27. dice2 = rdice(1)
  28. freq[dice2] = freq[dice2] + 1
  29. iter = iter + 1
  30. }
  31. }
  32. freq / max
  33. }
  34.  
  35. #1から6までそれぞれの値が出る確率をシミュレーションで計算する
  36. #こっちだと6の確率が低い
  37. experiment1(5000)
  38. #こっちだと全部同じ確率
  39. experiment2(5000)
Success #stdin #stdout 1.06s 27448KB
stdin
Standard input is empty
stdout
[1] 0.1798 0.1768 0.1912 0.1786 0.1884 0.0852
[1] 0.1712 0.1588 0.1750 0.1546 0.1656 0.1748