Research about Randomising , need assistance here.
I'm currently doing some research about random number ,
my plan is to create a table which lay ten mines everytime i refresh it,
i try a lot of different way to fix bugs ,
but it still not able to lay ten mines every times.
I realize i miss "end if" , "end while",
but when we put it in the code the function will stop working.
My current code looks like this:
<script type="text/javascript">
function addmines (x) {
var n = 10; //number of mines
var mines = []; //an empty array
while (n>0) {
var row = Math.floor(1+Math.random()*10);
var col = Math.floor(1+Math.random()*10);
if (row >= 0 && row < 10){
if (col >= 0 && col < 10) {
var id = "r"+ row + "c" + col;
n++;
var a = document.createElement("img");
a.src = "mine32.gif";
a.height = 30;
a.width = 30;
document.getElementById(id).appendChild(a);
//Creates Table
document.write('<table>');
//for loop that creates the row, increments from 0 to 9 each time it reiterates
for (var row=0; row<9; row++) {
//creates the table row
document.write('<tr>');
//a nested for loop that reiterates 9 times creating the <td>'s and then exits to the parent for loop.
for (var col=0; col<9; col++) {
//references all the <td>'s with a specific id attribute.
document.write('<td id="r', row, 'c', col, '">');
//document.write(' ');
//closes the <td>
document.write('</td>');
}
//closes the <tr> or row in plain English
document.write('</tr>');
}
//closes the <table> tag
document.write('</table>');
I think you don't need to add 1 to your random number to keep it in the range 0-9.
var row = Math.floor(1+Math.random()*10);
You might want to pick 10 random numbers from 0-99 and use those to determine the coordinates of your mines instead.
Code:
var deck = new Array(), shuffle = new Array();
for (var i= 0; i < 100; i++)
deck[i] = i;
for (i=99; i > -1; i--) {
var r = Math.floor(Math.random() * i); // Pick one from those remaining
shuffle[i] = deck[r];
deck[r] = deck[i]; // Move last of those remaining to slot just chosen
}
From the first ten items in shuffle, do a floor of a / 10 as well as a % 10 to get the coordinates.
Bookmarks