有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为不同的对象分配随机数

我有一个使用泊松分布随机生成数字的函数,还有一个Bus类和一个Bus Stop类。现在我已经生成了5个bus对象和15个bus stop对象。我的目标是给这五个巴士对象分配随机数,以指示它们的巴士站位置

private static int getPoissonRandom(double mean){
Random r = new Random();
double L = Math.exp(-mean);
int k = 0;
double p = 1.0;
do {
    p = p * r.nextDouble();
    k++;
} while (p > L);
return k - 1;
}

公共汽车站班

public class busStop {
int bus_stop_id;
public busStop(){    
  this.bus_stop_id=bus_stop_id;
} 
public void create_busStop(int total,int position){
   for(int i=1; i<=total; i++){
        bus_stop_id=i;
        //System.out.println("Bus_Stop with ID:"+i+" Spawned");
        setBusPosition(i,position);
    }
}
public void setBusPosition(int bus_id, int stop_id){
    System.out.println("Bus : "+bus_id+ " at Stop :"+stop_id);
    }
 }

公共汽车班

public class Bus {
int capacity;
int bus_id=0;



public Bus(){
  this.capacity=50;    
  this.bus_id=bus_id;
} 

public void spawn_bus(int bus_total){
    for(int i=1; i<=bus_total; i++){
        bus_id=i;
        System.out.println("Bus with ID:"+i+" created");
    }
}   

}

主要功能

    public static void main(String[] args) {
  int bus_number=5;  
  int total_bus_stops=15; 
  Bus bus = new Bus();
 busStop stops = new busStop();
 getPoissonRandom(5);
 bus.spawn_bus(bus_number);
 stops.create_busStop(total_bus_stops,getPoissonRandom(5));

}

当我运行代码时,我会不断地将一个数字分配给所有5个总线对象,但我希望使用泊松分布生成器将不同的随机数分配给5个总线对象


共 (1) 个答案

  1. # 1 楼答案

    因为您只调用了一次随机生成方法,所以您面临这个问题。 要获得所需的输出,需要在create_busStopMethod内部调用getPoissonRandom(双平均值) 诸如此类:

        public void create_busStop(int total,int position){
       for(int i=1; i<=total; i++){
            bus_stop_id=i;
            //System.out.println("Bus_Stop with ID:"+i+" Spawned");
            setBusPosition(i,MainClass.getPoissonRandom(position));
        }
    }
    

    然后将该方法调用为

    stops.create_busStop(total_bus_stops,5);
    

    或者您可以修改creat_busStop以接受id和位置,而不是总的_bus_站点,如下所示:

    public void create_busStop(int id,int position){
        bus_stop_id=id;
        setBusPosition(id,position);
    }
    

    }

    然后调用for循环中的方法

    for(int i=0;i<total_bus_stops;i++){
    stops.create_busStop(i,getPoissonRandom(5));
    }