我需要从给定的数字范围中随机分配数字。 例如 - (1,1,1,2,3,3,4,5,5,5)需要使用vba代码在一个范围内分布。 每个号码至少应分发一次。
答案 0 :(得分:0)
如果Peh在钱,那么试试这个:
var numbers = new[] { 1, 1, 1, 2, 3, 3, 4, 5, 5, 5 };
var take = 7;
var lookup = numbers.ToLookup(x => x);
var random = new Random();
var result =
lookup
.SelectMany(x => x.Take(1))
.Concat(lookup.SelectMany(x => x.Skip(1)).OrderBy(x => random.Next()))
.Take(take)
.OrderBy(x => random.Next())
.ToArray();