如何在一个可以';不能使用

本文关键字:不能 一个 | 更新日期: 2023-09-27 18:24:12

如何获得不能使用的xy坐标?假设我不希望xy(5,5)和(7,9)被使用。我该怎么做?

x = random.Next(0, 20);
y = random.Next(0, 20);
// if xy coordinate is (5,5) or (7,9), keep trying the above to obtain a different xy value

创建xy坐标时,如何使某些坐标不可用?

如何在一个可以';不能使用

您可以要求一个数字来填充第n个空闲时隙并跟踪空闲时隙(例如,对每个时隙使用布尔值),而不是要求从0到(最大时隙)的随机数。

在开始的free time lots = max slots中,则free time slots在每次分配之后减小。遍历槽-O(n)-并填充第n个空闲槽,n是Random.Next(0, freeSlots) 返回的数字

只需循环创建,直到满足您的条件:

var forbidden = new List<Tuple<int, int>>();
forbidden.Add(new Tuple<int, int>(5, 5));
forbidden.Add(new Tuple<int, int>(7, 9));
while(true)
{
    x = random.Next(0, 20);
    y = random.Next(0, 20);
    if(forbidden.All(t => x != t.Item1 || y != t.Item2)) break;
}

这样,只有当您具有"允许"的坐标,即到达break语句时,循环才会终止。

相关文章: