我有一个使用泊松分布随机生成数字的函数,我还有一个公共汽车类和一个公共汽车站类。现在我已经生成了5个公交车对象和15个公交站对象。我在这里的目标是将随机数分配给这五个公交车对象,以指示它们的公交站位置。
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");
}
}
}
Main函数
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个总线对象
发布于 2019-10-05 15:52:26
您正面临着这个问题,因为您只调用了一次随机生成方法。要获得所需的输出,您需要在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和位置,而不是接受total_bus_stops,如下所示:
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));
}
https://stackoverflow.com/questions/58245802
复制相似问题