मैं बाल्टी पर वस्तुओं को वितरित करने के लिए जावास्क्रिप्ट के Math.random()
फ़ंक्शन का उपयोग कर रहा हूं। बाद में, मैं एक कैनवास में बाल्टी प्रदर्शित करता हूं। मैं वस्तुओं को समान रूप से वितरित करने की अपेक्षा करता हूं, लेकिन (एकाधिक ब्राउज़रों में एकाधिक रीट्रीज़ के बाद भी), ऐसा लगता है कि वितरण बाईं ओर (शून्य के करीब) और अधिक दागदार होता है और दाएं ओर की ओर समान होता है (1 के करीब))। निम्नलिखित छवि देखें।जावास्क्रिप्ट अजीब यादृच्छिक व्यवहार
क्या मैं इसे गलत कर रहा हूं, या जावास्क्रिप्ट का यादृच्छिक फ़ंक्शन चूसता है?
<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, ऊंचाई-बाल्टी सूची [i], i + 1, ऊंचाई);' ctx.fillRect (i, height-bucketList [i], 1, ऊंचाई) होना चाहिए; ' – xiaoyi
+1 इस सवाल को पूरी तरह से पूछने के लिए। यह स्पष्ट रूप से शब्द दिया गया है, कोड पूर्ण है, अनुसरण करने में आसान है, और साफ है, और छवि बिल्कुल दिखाती है कि क्या हो रहा है। प्रश्न खुद ही दिलचस्प और प्रासंगिक है। धन्यवाद! –
@AdamLiss उन्होंने संख्याओं को गलत तरीके से प्लॉट किया ... – xiaoyi