Java 避免在不同的函数中生成随机整数
我的职能:Java 避免在不同的函数中生成随机整数,java,arrays,Java,Arrays,我的职能: public int[] generateRandomInteger(){ int[] arr = new int[100]; Random randomGenerator = new Random(); for (int i = 0; i < 100; i++){ int randomInt = randomGenerator.nextInt(16) + 10; arr[i] = randomInt; }
public int[] generateRandomInteger(){
int[] arr = new int[100];
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++){
int randomInt = randomGenerator.nextInt(16) + 10;
arr[i] = randomInt;
}
return arr;
}
public int[]generateRandomInteger(){
int[]arr=新int[100];
Random randomGenerator=新的Random();
对于(int i=0;i<100;i++){
int randomInt=randomGenerator.nextInt(16)+10;
arr[i]=randomInt;
}
返回arr;
}
问题是:当我在另一个函数中使用arr时,它将生成一个包含100个整数的不同数组。我怎样才能避免这个问题?我只想使用上面函数生成的数组
任何帮助都将被感激 只需生成一次,并始终使用它
int[] array = generateRandomInteger();
// operate on it...
// or pass it to another function
modifyArray(array);
System.out.println(Arrays.toString(array));
在哪里
public void modifyArray(int[]数组)
{
对于(int i=0;i
您可以在创建随机实例时使用种子。如果调用顺序相同,则使用相同种子创建的每个随机实例将返回相同的结果。但我同意Rohit Jain的观点,您可能希望保留数组的一个实例//这将保留生成的数组
private int[] generatedArray = null; //This keeps the array you generated
private int randomIdx = 0; //This keeps track of where you are
//This function controls access to your random numbers.
public int getNextInt() {
if (this.generatedArray == null) {
this.generatedArray = generateRandomInteger();
randomIdx = 0;
}
return generatedArray[randomIdx++];
}
//Technically this doesn't need to be in the same class
//We keep it untouched, though, in case you need the functionality as-is
public int[] generateRandomInteger(){
int[] arr = new int[100];
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++){
int randomInt = randomGenerator.nextInt(16) + 10;
arr[i] = randomInt;
}
return arr;
}
私有int randomIdx=0//这会记录你在哪里
//此函数控制对随机数的访问。
public int getNextInt(){
if(this.generatedArray==null){
this.generatedArray=generateRandomInteger();
randomIdx=0;
}
返回生成的数组[randomIdx++];
}
//从技术上讲,这不需要在同一个类中
//不过,我们会保持它不变,以防您需要现有的功能
public int[]generateRandomInteger(){
int[]arr=新int[100];
Random randomGenerator=新的Random();
对于(int i=0;i<100;i++){
int randomInt=randomGenerator.nextInt(16)+10;
arr[i]=randomInt;
}
返回arr;
}
如果希望所有对象共用
arr
变量,请使用静态变量
您可以用这种方式定义一个单例实例
public class ArrayIntGenerator {
private int[] array;
private ArrayIntGenerator()
{
this.array = new int[100];
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++){
int randomInt = randomGenerator.nextInt(16) + 10;
this.array[i] = randomInt;
}
}
private static ArrayIntGenerator instance = null;
public final static ArrayIntGenerator getInstance() {
if(null == instance) instance = new ArrayIntGenerator();
return instance;
}
public int[] getArray() {
return this.array;
}
}
公共类数组生成器{
私有int[]数组;
专用阵列生成器()
{
this.array=新整数[100];
Random randomGenerator=新的Random();
对于(int i=0;i<100;i++){
int randomInt=randomGenerator.nextInt(16)+10;
this.array[i]=randomInt;
}
}
私有静态ArrayIntGenerator实例=null;
公共最终静态数组生成程序getInstance(){
如果(null==instance)instance=new ArrayIntGenerator();
返回实例;
}
public int[]getArray(){
返回此.array;
}
}
并使用
ArrayIntGenerator.getInstance().getArray()访问int[]
,是否将该数组设置为实例字段?还是类字段?你能给我举个例子吗?非常感谢!这意味着您编写的代码正在按其应有的方式工作。:)<代码> null =实例这不是C++
static int[] arr = new int[100];
public void setRandomIntegerArray(){
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++){
int randomInt = randomGenerator.nextInt(16) + 10;
arr[i] = randomInt;
}
}
public int[] getRandomIntegerArray(){
return arr;
}
int[] arr = new int[100];
public void setRandomIntegerArray(){
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++){
int randomInt = randomGenerator.nextInt(16) + 10;
arr[i] = randomInt;
}
}
public int[] getRandomIntegerArray(){
return arr;
}
public class ArrayIntGenerator {
private int[] array;
private ArrayIntGenerator()
{
this.array = new int[100];
Random randomGenerator = new Random();
for (int i = 0; i < 100; i++){
int randomInt = randomGenerator.nextInt(16) + 10;
this.array[i] = randomInt;
}
}
private static ArrayIntGenerator instance = null;
public final static ArrayIntGenerator getInstance() {
if(null == instance) instance = new ArrayIntGenerator();
return instance;
}
public int[] getArray() {
return this.array;
}
}