本人做实验需要一些数据,即在平面坐标系内在按均匀分布或正态公布随机的生成一些点,
不知用java能不能实现,如果可以要用到哪些类,哪位高手能指教一下,不盛感谢!!

解决方案 »

  1.   

    当然可以了,Random不就可以了。
      

  2.   

    Random ran = new Random();
    ran.nextInt(1000);坐标是2个点,你随机生成指定范围内的2个数字就行了。
      

  3.   

    Random rand = new Random();
    int x = rand.nextInt(100);
    int y = rand.nextInt(100);肯定是随机的点,属于均匀分布!点(x,y)就是随机的散落在第一象限的0-100之间。
      

  4.   

    网上找了一个C++的算法,改成java:import java.util.*;
    /*GaussianRNG 是一个产生正态分布N(0,1)的随机数的类。
    * 其next方法返一个double类型的符合正态分布的随机数
    */
    public class GaussianRNG{
    int iset;
    double gset;
    Random r1, r2;
        
        public GaussianRNG(){
         r1 = new Random();
         r2 = new Random();
         iset = 0;
        }
        
        public double next(){
         double fac, rsq, v1, v2;    
         if (iset == 0) {
         do {
         v1 = 2.0 * r1.nextDouble() - 1.0;
         v2 = 2.0 * r2.nextDouble() - 1.0;
         rsq = v1*v1 + v2*v2;
         } while (rsq >= 1.0 || rsq == 0.0);
         fac = Math.sqrt(-2.0*Math.log(rsq)/rsq);
         gset = v1*fac;
         iset = 1;
         return v2*fac;
         } else {
         iset = 0;
         return gset;
         }
        }
        public static void main(String[] args){
         GaussianRNG rand=new GaussianRNG();
         //下面产生1000个正态分布的随机数:
         double[] doubles=new double[1000]; 
         for(int i=0;i<1000;i++){
         doubles[i]=rand.next();
         }
         Arrays.sort(doubles);
         //排序之后输出:
         System.out.println(Arrays.toString(doubles));    }
      
    }
      

  5.   

    楼主只要关心一个点在获取X轴,Y轴坐标这两个步骤是不是独立的,
    如果是就可以用:
             x = new Random();
            y = new Random();
    来组成一个随机的点。