Hi

I have searched this site for help with this and used an example of a lottery numbers program.

However, I need to modify it slightly but can't seem to get it right.

I would like to be able to generate random numbers between 0 and 100 (maybe negative oness as well). The code below just generates 7 numbers between 0 and 6 and I can't see where I need to adjust the code. If anyone could help me with this, I would be really grateful, even just an explaination so I can work it out myself would be great as I just can't see where it is saying only use those low 0 - 6 digits! :rolleyes:

// random number generator

import java.lang.Math;
// setting up array with random numbers 26 july 2005

public class myRandomNodes {
    public static void main(String[] args)
    {
     new ranNumbers (7);    
    }
}

class myRanNumbers {
    private int[] numbers;

  public myRanNumbers (int n )
  {
    numbers = new int[n];

    // initialise numbers
    int i = 0;

    while (i < n ) {
        //int r = (int) (Math.random() * n);
//       create a random integer between 1 and 100 inclusive
              int r = (int) Math.floor(Math.random() * 100);

        if (add (numbers, i, r)) {
            ++i;
        }
    }

    show_all (numbers);
  }

  private boolean add (int [] list, int size, int val)
  {
    for (int i = 0; i < size; i++ ){
        if (list[i] == val) {
            return false;
        }
    }
  list[size] = val;

  return true;
  }

  private void show_all (int[] list)
  {
    for (int i = 0; i < list.length; i++ ) {
        //System.out.print(list[i] + " ");
        System.out.println("rounded number between 0 and 100 is ");

    }
    System.out.println();
    }
  }

Edited 3 Years Ago by pyTony: fixed formating

1) use code tags
2) follow the Sun coding standards, which you can get from Sun.

Doing both will make your code a lot easier to read and debug, as it stands I'm not even going to try.

// random number generator

import java.lang.Math;


public class myRandomNodes 
{
   public static void main(String[] args)
   {
     new ranNumbers (7); 
   }
}

  class myRanNumbers 
  {
    private int[] numbers;

    public myRanNumbers (int n )
    {
      numbers = new int[n];

      // initialise numbers
      int i = 0;

      while (i < n ) 
      {
        int r = (int) Math.floor(Math.random() * 100);
        if (add (numbers, i, r)) 
        {
          ++i;
        }
      }

     show_all (numbers);
   }

   private boolean add (int [] list, int size, int val)
   {
     for (int i = 0; i < size; i++ )
     {
       if (list[i] == val) 
       {
         return false;
       }
     }
   list[size] = val;
 
   return true;
   }

   private void show_all (int[] list)
   {
     for (int i = 0; i < list.length; i++ ) 
     {
     System.out.print(list[i] + " ");
     }
     System.out.println();
     }
  }

Hope it makes it a bit easier to read - sorry about the unformatting before :-|

Use the Random Class. It's more random than Math.random();

import java.util.*;

public class RandomClassTest
{
	public static void main(String[] args)
	{
		Random randNumGenerator = new Random();

		int[] x = new int[7];
		for (int i=0; i<x.length; i++)
		{
			x[i] = (randNumGenerator.nextInt(100)+1);
		}
	}
}

Be sure to add 1 if you want to reach 100.

Hi everyone,

Use the Random Class. It's more random than Math.random();

import java.util.*;

public class RandomClassTest
{
	public static void main(String[] args)
	{
		Random randNumGenerator = new Random();

		int[] x = new int[7];
		for (int i=0; i<x.length; i++)
		{
			x[i] = (randNumGenerator.nextInt(100)+1);
		}
	}
}

Be sure to add 1 if you want to reach 100.

Could not have said it better myself

Richard West

This article has been dead for over six months. Start a new discussion instead.