📄 rsgenerator.java
字号:
package com.lqy.GEP;
import java.util.*;
public class RSGenerator{
public ArrayList<Double> DiscreteDistribution=new ArrayList<Double>();
public ArrayList<Double> ReverseSearchTable=new ArrayList<Double>();
public RSGenerator(){}
public void UpdateDiscreteDistribution(ArrayList<Double> argA){
// System.out.println(argA.size());
this.DiscreteDistribution.clear();
this.ReverseSearchTable.clear();
this.Nomalization(argA);
this.InitReverseSearchTable();
// System.out.println(this.ReverseSearchTable.size());
}
private void Nomalization(ArrayList<Double> argA){
double tempS=0;
for(int i=0;i<argA.size();i++)
tempS+=argA.get(i);
if(Math.abs(tempS-1)>=Double.MIN_VALUE){
for(int i=0;i<argA.size();i++)
this.DiscreteDistribution.add(i, argA.get(i)/tempS);
}else{
for(int i=0;i<argA.size();i++)
this.DiscreteDistribution.add(i,argA.get(i));
}
}
private void InitReverseSearchTable(){
double tempS=0;
for(int i=0;i<this.DiscreteDistribution.size();i++){
tempS+=this.DiscreteDistribution.get(i);
this.ReverseSearchTable.add(i,tempS);
}
// System.out.println(this.DiscreteDistribution.size()+" "+this.ReverseSearchTable.size());
}
public int NextInt(){
try{Thread.sleep(1);}catch(Exception e){e.printStackTrace();}
int tempI=0;
Random tempR=new Random();
double tempD=tempR.nextDouble();
for(int i=0;i<this.ReverseSearchTable.size();i++)
if(tempD<this.ReverseSearchTable.get(i)){
tempI=i;
break;
}
return tempI;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -