110,567
社区成员
发帖
与我相关
我的任务
分享
var rnd = new Random();
var datas = (from n in Enumerable.Range(0, 98) select 0.01 * rnd.Next(100, 1000)).ToList();
var p = 89.99 / datas.Sum();
datas = (from n in datas select p * n).ToList();
datas.Add(10);
datas.Add(0.01);
datas = datas.OrderByDescending(x => x).ToList();
显然这里是随机均匀分布的,不好玩!
Random rnd = new Random();
int nCount = 100;
int n = 10;
double[] dArr = new double[n];
double dBase = (double)nCount / n;
//默认都是一样的
for (int i = 0; i < n; i++) dArr[i] = dBase;
for (int i = 0; i < n / 2; i++) {
//生成 0 - dbase 之间的随机数
double d = rnd.NextDouble() * dBase;
dArr[i] -= d; //其中一个减掉d 另一个加上d
dArr[n - 1 - i] += d;
}
Array.Sort(dArr);
foreach (var v in dArr)
Console.WriteLine(v);
//===============
3.20536261108022
3.23604574577699
5.6426536923473
6.24905226111834
8.57602051858605
11.423979481414
13.7509477388817
14.3573463076527
16.763954254223
16.7946373889198