C#产生100个随机数,要求它们的和是100,请问怎么实现?要充分随机化。

C#产生100个随机数,要求它们的和是100,请问怎么实现?要充分随机化。

产生100个随机数,然后按比例缩放。

要具体程序,请先采纳。

Random ran=new Random();
int RandKey=ran.Next(0,99);
for(int i=0;i<100;i++){
首先生成一个0到99的随机数,然后用100减去生成的随机数
int temp=ran.Next(0,100-RandKey);
}

最后一个不用生成

private List Get100Numbers()
{
List rlts = new List();
double sum = 0;
for (int i = 0; i < 100; i++)
{
double number = this.GetRandomValue(i);
sum += number;
rlts.Add(number);
}
double rate = 100 / sum;
sum = 0;
for (int i = 0; i < rlts.Count; i++)
{
rlts[i] = rlts[i] * rate;
sum += rlts[i];
}
return rlts;
}

    private double GetRandomValue(int index)
    {
        Random r = new Random((int)DateTime.Now.Ticks + index);
        double rlt = r.NextDouble() * 100;
        return rlt;
    }

Random rnd = new Random();
var query = Enumerable.Range(0, 100).Select(x => rnd.NextDouble())ToArray();
var query = query.Select(x => x / query.Sum() * 100.0).ToArray();

 Random rnd = new Random();
var query = Enumerable.Range(0, 100).Select(x => rnd.NextDouble())ToArray();
query = query.Select(x => x / query.Sum() * 100.0).ToArray();