Javascript随机图像

时间:2014-11-25 19:31:47

标签: javascript

我做了一个随机图像显示作为实验室的一部分,我不能让第三个图像出现(scissors.png)。多数民众赞成以下我的javascript ..帮助将非常感谢!

var total = 0;
function Images(){
     var img1 = document.getElementById('img1');
     var x = Math.floor(Math.random()*2)+1;

     /* Player one */

     if (x ==1)
         img1.src = 'rock.png';
     else if (x==2)
         img1.src = 'paper.png'; 
     else if (x==3)
         img1.src = 'scissors.png';

 } 

6 个答案:

答案 0 :(得分:3)

  

我作为实验室的一部分进行随机图像显示,但我无法显示第三张图像(scissors.png)。

那是因为你将你的随机数乘以2,然后对其进行拼接,这样你就可以得到0-2(含)的范围;这不是一个问题(给定从零开始的数组)但是你的if期待一个基于数组的索引。

顺便说一下,我建议:

var images = ['rock', 'paper', 'scissors'],
    rand = Math.floor(Math.random() * images.length);

return images[rand] + '.png';

导致这样的实现:



function getImage() {
  var images = ['rock', 'paper', 'scissors'],
    rand = Math.floor(Math.random() * images.length);

  return images[rand] + '.png';
}

document.querySelector('button').addEventListener('click', function() {
  console.log(getImage());
});

<button>Get an image</button>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

试试这个:

var x = Math.floor(Math.random()*3)+1;

我还建议您使用:if (x === 1)

答案 2 :(得分:0)

function Images(){
     var rand = Math.floor(Math.random()*3), // pick a random number: 0, 1 or 2
         results = [rock, paper, scissors]; // Array of names, ordered.

     // pick the right index from the array, so if the random number was '1', 
     // so the value at that index is used, which is "paper".
     document.getElementById('img1').src = results[rand] + '.png';
 } 

答案 3 :(得分:0)

只需将乘数更改为3 甚至变量,等于可能性结果的数量。

Math.random返回0 <= r < 1 然后相乘,我们可以得到0 <= r*n < n个浮点数 Math.floor获取整数0 <= k < n或等于0 <= k <= n-1
如果您想获得[1, n],则应该为此序列添加1 但[0, n-1]最适合长度为n的数组索引。

这里的实施示例:

function action(images){
     document.getElementById('img1').src = 
                images[Math.floor(Math.random()*images.length)];
} 

action([
  'rock.png',
  'scissors.png',
  'paper.png',
  'lizard.gif',
  'Spok.jpg'
]);

答案 4 :(得分:0)

Javascript Math.random()返回范围[0,1]之间的浮点值 - 意味着包括0但最多1除外1.

因此,最大值为0.99 * 2 = 1.98并且递增1为2.98。楼层值为2.

最简单的解决方案就是将其乘以3.

答案 5 :(得分:0)

Math.random() ∈ [0,1)
⇒ Math.random() * 2 ∈ [0,2)
⇒ Math.floor(Math.random()*2) ∈ [0,1] ∩ ℤ = {0,1}
⇒ Math.floor(Math.random()*2) + 1 ∈ {1,2}

如果你想要一组{1,2,3},你应该乘以3:

Math.random() ∈ [0,1)
⇒ Math.random() * 3 ∈ [0,3)
⇒ Math.floor(Math.random()*3) ∈ [0,2] ∩ ℤ = {0,1,2}
⇒ Math.floor(Math.random()*3) + 1 ∈ {1,2,3}