2 warwarwwqq warwarwwqq 于 2015.06.01 09:15 提问

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

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

5个回答

caozhy
caozhy   Ds   Rxr 2015.06.01 09:33
已采纳

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

要具体程序,请先采纳。

warwarwwqq
warwarwwqq 写好了么?
2 年多之前 回复
warwarwwqq
warwarwwqq 采纳了,写给我吧
2 年多之前 回复
lakshyali
lakshyali   2015.06.01 10:19

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);
}

最后一个不用生成

warwarwwqq
warwarwwqq 不行
2 年多之前 回复
leation2shany
leation2shany   2015.06.01 12:21

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;
    }
caozhy
caozhy   Ds   Rxr 2015.06.01 17:16

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();

caozhy
caozhy   Ds   Rxr 2015.06.01 17:17
 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();
Csdn user default icon
上传中...
上传图片
插入图片