将图像分配给随机数范围

时间:2012-01-15 16:19:24

标签: javascript

所以,我已经准备好了我的代码来生成并打印“-20到20”之间的随机数。

我想做什么,这就是我被困住的地方,是将4个不同的图像分配到我的总范围“-20到20”之间的数字范围内。

例如:

  • image1.gif将被分配给“-20和-10”
  • 之间的任意随机#
  • image2.gif分配给“-9和0”
  • image3.gif至“1和10”
  • image4.gif至“11 and 20”

欢迎任何建议!

编辑: 所以基于Jon的回答,我已经将最后两行更改为document.write,并且我试图将实际图像显示在文本输出上方。然而,我知道IMG.SRC中有一条错误的路线。如果我的图像位于我的根目录中,那么需要改变什么呢?提前谢谢。

<html>
<title>RANDOM IMAGE TO NUMBER RANGE</title>
<body>
<center>
<script language="javascript" type="text/javascript">
var ranges = [
    { from: 11, image: "image4.jpg" },
    { from: 1, image: "image3.jpg" },
    { from: -9, image: "image2.jpg" },
    { from: -20, image: "image1.jpg" }       
];

var random_num = (Math.round((Math.random()*41)+-20));
var image = "default";

for(var i = 0; i < ranges.length; ++i) {
    if(random_num >= ranges[i].from) {
        image = ranges[i].image;
        break;
    }
}
document.write("Number: " + random_num + " parts, " + " Imagetitle: = " + image);
document.write('<img src="'+ranges[image]+'">');

</script>
<br></br>
<div>
CLICK <a href="javascript:history.go(0);">REFRESH or F5</a> FOR A RANDOM IMAGE on NUMBER-RANGE.
</div>
</center>
</body>
</html> 

2 个答案:

答案 0 :(得分:0)

将范围放在数组中并迭代它以查找您所在的范围:

// IMPORTANT: array is sorted in descending "from" order!
var ranges = [
    { from: 11, image: "image4" },
    { from: 1, image: "image3" },
    { from: -9, image: "image2" },
    { from: -20, image: "image1" }       
];

var random_num = (Math.round((Math.random()*41)+-20));
var image = "default";

for(var i = 0; i < ranges.length; ++i) {
    if(random_num >= ranges[i].from) {
        image = ranges[i].image;
        break;
    }
}

alert("random_num = " + random_num + " / image = " + image);

这对于可能相同或不相等的区间可以正常工作,并且可以轻松地适应稍微复杂的区间定义。

<强> See it in action

答案 1 :(得分:0)

使用参数(-20,-11),( - 10,-1),(0,9),(10,19)调用以下函数4次。

function get_rand_int(min, max) {

    return Math.floor(min + Math.random() * (max - min + 1));

} // get_rand_int()