Öğeleri kovalar üzerinden dağıtmak için JavaScript'in Math.random()
işlevini kullanıyorum. Daha sonra, kovaları bir tuvalde görüntülerim. Öğelerin eşit olarak dağıtılmasını beklerdim, ancak (birden çok tarayıcıda birden çok yeniden deneme yaptıktan sonra bile), dağıtım çok daha iyi bir şekilde solda (sıfıra yakın) tanecikli ve sağa doğru daha düzgün hale gelir gibi görünüyor (1'e yakın)). Aşağıdaki resme bakın .Javascript garip rasgele davranış
Yanlış mı yapıyorum yoksa JavaScript'in rasgele işlevi mi çalışıyor?
<html>
<head>
<script>
window.onload = function() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var width = canvas.width;
var height = canvas.height;
var buckets = width;
var total = width*height*0.3;
var bucketList = [];
// initialized each bucket to 0 items
for(var i=0; i<buckets; ++i) {
bucketList[i] = 0;
}
// distribute all items over the buckets
for(var i=0; i<total; ++i) {
++bucketList[Math.floor(Math.random()*buckets)];
}
// draw the buckets
ctx.fillStyle = "rgb(200,0,0)";
for(var i=0; i<buckets; ++i) {
ctx.fillRect (i, height-bucketList[i], i+1, height);
}
}
</script>
</head>
<body>
<canvas id="canvas" width="1000px" height="500px"/>
</body>
</html>
'ctx.fillRect (i, height-bucketList [i], i + 1, yükseklik);' ctx.fillRect olmalıdır (i, height-bucketList [i], 1, height); ' – xiaoyi
+1 Bu soruyu mükemmel bir şekilde sorduğum için. Açıkça ifade edildi, kod tamamlandı, takip edilmesi kolay ve temiz ve görüntü tam olarak ne olduğunu gösteriyor. Sorunun kendisi ilginç ve alakalı. Teşekkür ederim! –
@AdamLiss o yanlış numaraları çizdi ... – xiaoyi