a[i][j] = r.nextInt(10)<=6?1:0; //这里1就表示有线,0表示无线

解决方案 »

  1.   


    if (r.nextDouble()>0.6){
    a[i][j] = 1;
    a[j][i] = 1;
    }else{
    a[i][j] = 0;
    a[j][i] = 0;
    }

    是想表达这个意思么?
      

  2.   

    LZ可以这么做:搞一个Map<Integer,Integer> map,然后如下:
    map.put(0,1);
    map.put(1,1);
    map.put(2,1);
    map.put(3,1);
    map.put(4,1);
    map.put(5,1);
    map.put(6,0);
    map.put(7,0);
    map.put(8,0);
    map.put(9,0);然后 Integer value=map.get(r.nextInt(10));
    这样,value有10分之6的概率为1,LZ可以根据这个value来决定是否有边。当然,如果需要更高的精度,map的规模可以扩展,0、1值也可以错开。
      

  3.   

    这是数学LZ,只要有均匀分布的随机数发生器,通过变换可以得到任意分布的随机数。jvm 默认给的是伪随机数,分布特征可能不完全是均匀分布,当然有待考证。
    LZ当然也可以自己实现随机数生成器。需要真随机数的话,JVM需要在某处设置一下,具体我忘了,可以google下。
    真随机数,就是指收集机器物理噪音产生的随机数,Linux下有个命令的,具体拼法我也给忘了。
    年纪大了,记性不行了。唉。