在Java中进行替换采样时,如何提高运行速度?
我已经处理过表格数据,其中大约有100多万行,而它只包含一列 我尝试使用bootstrap方法,也就是传统的抽样方法 由于bootstrap方法只是用替换法对总体中的值进行采样,所以我用一种简单的方法编写了下面的代码在Java中进行替换采样时,如何提高运行速度?,java,matrix,sampling,statistics-bootstrap,Java,Matrix,Sampling,Statistics Bootstrap,我已经处理过表格数据,其中大约有100多万行,而它只包含一列 我尝试使用bootstrap方法,也就是传统的抽样方法 由于bootstrap方法只是用替换法对总体中的值进行采样,所以我用一种简单的方法编写了下面的代码 public static double[] inelegantSampleWithReplacement(double []someArray,int howmany){ double result[] = new double[NUMBER_OF_ROWS];
public static double[] inelegantSampleWithReplacement(double []someArray,int howmany){
double result[] = new double[NUMBER_OF_ROWS];
for(int i=0;i<howmany;++i){
result[i] = someArray[(int)(someArray.length * Math.random())];
}
return result;
}
publicstaticdouble[]inegantsamplewithreplacement(double[]someArray,int-howmany){
double result[]=新的double[行数];
对于(In i=0;也许您应该考虑使用Apache Spple而不是编写自己的代码。约束是代码只在本地计算机上工作而不是分布式平台。这就是为什么我问了一个更好的解决方案的原因。谢谢您的评论。您想要实现什么?从数组中获得随机数据吗?为什么?不理解WH。如果您的代码运行太长时间,可能需要测量一些额外的操作。如果您在for语句之前使用java.util.Random r=new Random();
fore,以及for get Random INBOUNDSr.nextInt(someArray.length),则此代码可能会更快
我快速试用了您的代码。输入100万次,获得1000个样本,大约需要1毫秒。即使输入100万次,获得100万个样本也只需要55毫秒。很可能是方法中的某些东西导致了速度变慢