我怎样才能有不能使用的 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 坐标时,如何使某些坐标不可用?
我怎样才能有不能使用的 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
语句。