我有这样的一个要求,
比如说:和为1000
产生10个100左右的数字。如:99、101、102、99.9、93、107、100.1、96.2、104.8、99

解决方案 »

  1.   

    产生90-110之间的10个和为1000的随机数,保留1位小数
    Random rnd = new Random();double[] rndnum = new double[10];
    double sum = 0.0;
    for (int i=0; i<9; i++)
    {
    rndnum[i] = Math.Round(100 + 20 * (rnd.NextDouble() - 0.5), 1);
    sum += rndnum[i];
    Console.WriteLine(rndnum[i]);
    }
    rndnum[9] = Math.Round(1000 - sum, 1);
    Console.WriteLine(rndnum[9]);运行结果:
    101.9
    97.3
    100.4
    91.4
    102.5
    90.9
    94.4
    91
    104.6
    125.6
      

  2.   

    rndnum[i] = Math.Round(100 + 20 * (rnd.NextDouble() - 0.5), 1);解释一下
      

  3.   

    rnd.NextDouble() - 0.5
    生成的是-0.5~+0.5之间的随机数,乘以20得到一个-10~+10之间的随机数,加上100范围就成了90~110,最后用Math.Round(double,1)四舍五入到1位小数