110,534
社区成员
发帖
与我相关
我的任务
分享
public int[] list(int N, int P)
{
Random r = new Random();
int[] result = new int[P];
int j;
//使分配的数至少为1;
for (int i = 0; i < P; i++)
{
result[i] = 1;
}
//让下标为随机数,每次分配1,
for (int i = 0; i < N - P; i++)
{
j = r.Next(P);
result[j]++;
}
return result;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int n = 20;
int p = 10;
var data = Enumerable.Range(1, n).OrderBy(x => Guid.NewGuid()).ToArray();
var splitter = Enumerable.Range(1, n - 1).OrderBy(x => Guid.NewGuid()).ToList().Take(p - 1).OrderBy(x => x).ToArray();
var result = new int[] { 0 }.Concat(splitter).Zip(splitter.Concat(new int[] { n }), (x, y) => new { x, y }).Select(x => data.Skip(x.x).Take(x.y - x.x).ToArray());
foreach (var item in result)
{
Console.WriteLine(string.Join(", ", item));
}
}
}
}
4
1, 17, 20
13
9, 14, 12
10
3, 2, 16, 15
6, 18, 5
7
19
11, 8
Press any key to continue . . .