 This topic has 10 replies on 1 page. 


Posts:341 Registered: 030612  arrays and Math.random Aug 2, 2004 11:38 AM 

 i am playing around with arrays and i found this exercise to help me. A magic square of order n is an arrangement of integers 1 through n^2 in a square format such that the sum of numbers along any row, any column and any diagonal is the same. so i have this code to generate a square n < 50 this code seems to work...but i think only with odd integers???? is there a way for me to only ask for a random odd interger using Math.random???? thanks in advance annie :) public class square{public static void main(String args[]){ int i, j, k; int n, magic_square[][]; magic_square = new int[50][50]; for ( i = 0; i < 50; i++) for ( j = 0; j < 50; j++) magic_square[i][j] = 0; System.out.println("Magic Square will generate a square n < 50"); n = (int)Math.floor(Math.random()*50+1); System.out.println("Random number choosen was "+n); System.out.println("Below is the result of Magic Square of order "+n); i = 0; j = n / 2; for(k = 1; k <= n*n; k++) { magic_square[i][j] = k; i; j++; if(i < 0 && j > n1) {i += 2; j;} if(i < 0) i = n1; if(j > n1) j = 0; if (magic_square[i][j] != 0) {i += 2; j;} }//end for for (i = 0; i < n; i++) { for(j = 0; j < n; j++) System.out.print(magic_square[i][j]+"\t"); System.out.print("\n"); }//end for }//end main}//end class square
 
Posts:2,206 Registered: 8/15/02  Re: arrays and Math.random Aug 2, 2004 11:40 AM (reply 1 of 10) 

 Ask for a random integer between 0 and 25, and then multiply by two  
Posts:341 Registered: 030612  Re: arrays and Math.random Aug 2, 2004 11:44 AM (reply 2 of 10) 

 n = (int)Math.floor(Math.random()*(25+0)*2);
when i use this line of code i still get an even number at times  
Posts:2,206 Registered: 8/15/02  Re: arrays and Math.random Aug 2, 2004 12:02 PM (reply 3 of 10) 

 My bad, you want odd numbers between 0 and 50? Random r = new Random();int n = r.nextInt(26);n = 2*n1;
You may want to make the Random object a class variable, not local to the method.  
Posts:87 Registered: 000505  Re: arrays and Math.random Aug 2, 2004 12:09 PM (reply 4 of 10) 

 That returns 1 if n==0. Instead, you want int n = r.nextInt(25);n = 2*n + 1;
 
Posts:341 Registered: 030612  Re: arrays and Math.random Aug 2, 2004 12:09 PM (reply 5 of 10) 

 do i need to import a library to use Random  
Posts:2,206 Registered: 8/15/02  Re: arrays and Math.random Aug 2, 2004 12:10 PM (reply 6 of 10) 

 Actually, that won't quite work either since you could get 1. I guess better would be Random r = new Random();int n = ( 2.0 * r.nextInt(25) ) +1;
That should do nicely  
Posts:2,206 Registered: 8/15/02  Re: arrays and Math.random Aug 2, 2004 12:11 PM (reply 7 of 10) 

 do i need to import a library to use Random Yep, either check the API or trust me import java.util.Random;
Assuming you are using some variant of 1.4. The Random class is not available in 1.3  
Posts:2,206 Registered: 8/15/02  Re: arrays and Math.random Aug 2, 2004 12:12 PM (reply 8 of 10) 

 It must be Monday... int n = ( 2 * r.nextInt(25) ) +1;
 
Posts:341 Registered: 030612  Re: arrays and Math.random Aug 2, 2004 12:20 PM (reply 9 of 10) 

 thanks...you saved me i was actually trying to make this more complicated than ever n = (int)Math.floor(Math.random()*50+1); Random r = new Random(); n = ( 2 * r.nextInt(25) ) +1;
i was going for a while loop and a huge headache... while (n != 0){if(n % 2 == 0){//n was even..ffnd another n//math.random}//end ifelse{//n was odd print square//insert code}/end else}//end while
 
Posts:11,186 Registered: 06.04.04  Re: arrays and Math.random Aug 2, 2004 1:24 PM (reply 10 of 10) 

 Even if all that odd/even random number generation stuff were solved, you'd still need different algorithms generating those odd/even sized magic squares. That's the core of all the fun of this exquisite little problem.
kind regards,
Jos  