随机在java中生成相同的数字

时间:2014-06-08 09:15:58

标签: java random

这是我的java代码。

import java.io.*;
import java.util.*;
import java.util.concurrent.TimeUnit;

class search
{
  private int numelem;
   private int[] input=new int[100];

public void setNumofelem()
{

  System.out.println("Enter the total numebr of elements");
  Scanner yz=new Scanner(System.in);
  numelem=yz.nextInt();

}
public void randomnumber() throws Exception
{
int max=500,min=1,n=numelem;
   Random rand = new Random(); 
 for (int j=0;j < n;j++)
 {

   input[j]=rand.nextInt(max)+1;

} 
}

public void printinput()
{ 
  int b=numelem,t=0;
  while(true)
if(b!=0)
{
   System.out.print("  "+input[t]);
     b--;
     t++;
}
else
break;
}

}
public class mycode
{
  public static void main(String args[]) throws Exception
{

   search a=new search();
   a.setNumofelem();
   a.randomnumber();
   a.printinput();
}
}

现在函数randomnumber()只返回相同的数字。如果我作为一个单独的java程序执行它,函数执行得很好但是如果我用对象调用它就会失败。我也尝试过以下变化但是没有工作一切都返回相同的数字。

变体1:

public void randomnumber() throws Exception
    {
    int max=500,min=1,n=numelem;
       Random rand = new Random(); 
     for (int j=0;j < n;j++)
     {

            TimeUnit.SECONDS.sleep(1);

       input[j]=rand.nextInt(max)+1;

    } 
    }

变体2:

 public void randomnumber() throws Exception
    {
    int max=500,min=1,n=numelem;
       Random rand = new Random(); 
     for (int j=0;j < n;j++)
     {

    rand.setSeed(System.nanoTime());

       input[j]=rand.nextInt(max)+1;

    } 
    }

变体3:

 public void randomnumber() throws Exception
    {
    int max=500,min=1,n=numelem;
       Random rand = new Random(); 
     for (int j=0;j < n;j++)
     {

            TimeUnit.SECONDS.sleep(1);
    rand.setSeed(System.nanoTime());

       input[j]=rand.nextInt(max)+1;

    } 
    }

示例输入/输出:

输入元素数量:

5

23 23 23 23 23 23

1 个答案:

答案 0 :(得分:3)

问题不是随机。问题出在您的printinput()方法中。

您在每次迭代时都打印相同的元素,因为您永远不会更改用于访问数组的索引。

如何解决?在每次迭代时增加索引t。此外,使用简单的for循环来打印数组内容将更好,更容易阅读:

public void printinput()
{
    for (int i = 0; i < numelem; i++) {
        System.out.print("  " + input[i]);
    }
}

注意:我强烈建议您遵循Java命名约定。对方法/变量使用mixedCase,对类/接口使用CamelCase