int getnum50()
{
Random rand = new Random();
return (1+rand.nextInt(50));
}
- 您将获得一个名为的预定义函数
getnum50()
,该函数返回一个整数,该整数是 1-50 之间的一个随机数。 - 您可以根据需要多次调用此函数,但请注意此函数非常耗费资源。
- 您不能使用任何其他随机生成器。您不能更改
getnum50()
.
以随机顺序打印数字 1-100。(不是 100 个随机数)
笔记:
- 一世。每个数字都应该只打印一次。
- ii. 数字列表中不应有任何模式。列表应该是完全随机的,即所有数字在任何地方出现的概率都是相等的。
- iii. 您可以调用 getnum50() 任意次数来获取从 1 到 50 的随机数,但请尝试优化代码。
- iv. 您不能使用除 getnum50() 之外的任何其他随机生成器函数。
我写了一些显示正确输出的代码。
import java.util.Random;
public class RandomInteger{
int number[]=new int[100];//To store numbers in random order
public RandomInteger(){
int n[]=new int[100];//array to store which random numbers are generated
int off[]={-1,0};//offset to add
System.out.println("Length of array number100 is:"+number.length);
System.out.println("Generating random numbers in the range 1-100:");
for(int n1=0;n1<number.length;n1++){
int rnd=off[(getnum50()-1)/50]+(getnum50()*2);
if(n[rnd-1] == 0){
n[rnd-1]=1;//to indicate which random number is generated
number[n1]=rnd;
System.out.println(number[n1]+" ");
}
}
}
//end of constructor
int getnum50(){
Random rand = new Random();
return (1+rand.nextInt(50));
}
public static void main(String args[]){
RandomInteger m= new RandomInteger();
}
//end of main()
}
//end of class
虽然在该轮中被接受,但在下一轮中,面试官告诉我这getnum50()
是一种昂贵的方法,即使在最好的情况下,我也必须为每个生成的数字调用两次。即 1-100 次 200 次。在最坏的情况下,它将是无穷大,平均情况下是数万。他要求我优化代码,以显着改善平均情况。我无法回答。所以请给我正确的答案?我将如何优化我上面的代码?