Solved

if (Math.random() > 0.5)

Posted on 2009-04-07
2
1,488 Views
Last Modified: 2012-06-27
Hello,

I have this small script that change on refresh. I want to make sure that it displays 50 / 50% to the visitors.

is if (Math.random() > 0.5) than correctly chosen?
is there a better way to do this?
<html > 

<head> 

<title>Random Images</title> 

<script type="text/javascript"> 

//<![CDATA[ 

var images1="image_1.jpg"; 

var imglink1="http://www.test1.com";

var alt1="test1";
 

var images2="image_2.jpg"; 

var imglink2="http://www.test2.com";

var alt2="test2";
 

function randomImage() { 

if (Math.random() > 0.5) {

document.getElementById("random").src=images1; 

document.getElementById("link").href=imglink1; 

document.getElementById("random").alt=alt1; 

}

else {

document.getElementById("random").src=images2; 

document.getElementById("link").href=imglink2; 

document.getElementById("random").alt=alt2; 

}

} 

onload=randomImage; 

//]]> 

</script> 

</head> 

<body > 

<div id="container"> 

<a href="" id="link"><img id="random" src="" alt=""/></a> 

</div> 

</body> 

</html>

Open in new window

0
Comment
Question by:mvanthof
2 Comments
 
LVL 42

Expert Comment

by:David S.
ID: 24094473
I'd use ">=" instead of just ">" because the range is between 0 (inclusive) and 1 (exclusive).

No, there is no better way to do it.
0
 
LVL 75

Accepted Solution

by:
Michel Plungjan earned 125 total points
ID: 24094894
However I would do this instead:

<html > 

<head> 

<title>Random Images</title> 

<script type="text/javascript"> 

//<![CDATA[

function crtImage(imgUrl,href,title) {

  this.imgUrl = imgUrl;

  this.href=href;

  this.title=title

} 

var myImages = new Array(

  new crtImage("image_1.jpg","http://www.test1.com","test1"),

  new crtImage("image_2.jpg","http://www.test2.com","test2")

); // note the lack of comma on the last item  

 

function randomImage() { 

  var rnd = parseInt(Math.random()*myImages.length);

  var imgObj = myImages[rnd];

  document.getElementById("random").src=imgObj.imgUrl; 

  document.getElementById("link").href=imgObj.href; 

  document.getElementById("link").title=imgObj.title; 

} 

window.onload=randomImage; 

//]]> 

</script> 

</head> 

<body > 

<div id="container"> 

<a href="" id="link"><img id="random" src="" alt=""/></a> 

</div> 

</body> 

</html>

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Avoid defining the variables in the global scope; trying to define them in a local function scope. Because:   • Look-up is performed every time a variable is accessed.   • Variables are resolved backwards from most specific to least specific scope…
The task A number given should be formatted for easy reading by separating digits into triads. Format must be made inline via JavaScript, i.e., frameworks / functions are not welcome. So let’s take a number like this “12345678.91¿ and format i…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now