math.floor / math.round w math random książka Duckett J. Javaxript i jQuery - błąd?

0

Cześć, ucze sie javascriptu z ksiązki podanej w tytule i jedna część wydała mi się błędna wrzucam link ze zdjęciem do fragmentu: https://imgur.com/a/9iRcNs5

sprawdziłem też jak by to wyglądało w praktyce:


function doMath () {
 
  var tabOption1 = ["zero",0,0,0,0,0,0,0,0,0,0];
  var tabOption2 = ["zero",0,0,0,0,0,0,0,0,0,0];

  for(var i=0; i < 10000; i++)
  {
    tabOption1[(Math.floor((Math.random()*10) + 1))]++;
    tabOption2[(Math.round((Math.random()*10) + 1))]++;
  }

  alert(tabOption1);
  alert(tabOption2);
}

doMath();

wynik floor: 1011 // 1035 // 965 // 976 // 946 // 1036 // 1049 // 973 // 1018 // 991 <- tablica od 1 do 10
wynik round: 513 // 961 // 1026 // 1019 // 988 // 992 // 1002 // 998 // 1002 // 994

w round wygląda jakby tylko jedynka była poszkodowana, więc czy ja rozumiem coś źle?

1

w round wygląda jakby tylko jedynka była poszkodowana

Co to znaczy?

0

Miałem na myśli, że jedynka i 10 tutaj wylosowywana jest 2 razy rzadziej (10 uciąłem ale wyglądała tak samo jak 1) a w książce napisane było, że 1 i 10 będą występowały częściej.

używając round:
[0 ; 0.5) 0 - najmniejszy zakres
[0.5 ; 1.5) 1
[1.5 ; 2.5) 2
[2.5 ; 3.5) 3
[3.5 ; 4.5) 4
[4.5 ; 5.5) 5
[5.5 ; 6.5) 6
[6.5 ; 7.5) 7
[7.5 ; 8.5) 8
[8.5 ; 9.5) 9
[9.50 ; 10) 10 - najmniejszy zakres

używając floor:
[0 ; 1) 0
[1 ; 2) 1
[2 ; 3) 2
[3 ; 4) 3
każdy przedział losowania ma taki sam zakres

Więc dobrze rozumiem że tam jest po prostu błąd i zamiast "znacznie częściej" powinno być "znacznie rzadziej"

1 użytkowników online, w tym zalogowanych: 0, gości: 1