C# 随机X-Y坐标
我想得到一些随机的(x,y)坐标,但我不知道怎么做。坐标之间的相对差值必须为60 例如,以像素为单位:C# 随机X-Y坐标,c#,C#,我想得到一些随机的(x,y)坐标,但我不知道怎么做。坐标之间的相对差值必须为60 例如,以像素为单位: x y 0 60 0 120 0 180 60 0 120 60 180 60 .... 如何使用C#?实现这一点?假设您希望这些坐标在0-n范围内。然后你必须得到一个介于0和n/30之间的随机数,然后乘以30。因此: Random r = new Random(); coordinate_whatever = r.Next(n / 30) * 30; 你可
x y
0 60
0 120
0 180
60 0
120 60
180 60
....
如何使用C#?实现这一点?假设您希望这些坐标在0-n范围内。然后你必须得到一个介于0和n/30之间的随机数,然后乘以30。因此:
Random r = new Random();
coordinate_whatever = r.Next(n / 30) * 30;
你可以这样做:
x = random(0, n)
if(x - 30 < 0)
y = random(x + 30, n)
else if(x + 30 > n)
y = random(0, x - 30)
else
// in this case, x splits the range 0..n into 2 subranges.
// get a random number and skip the "gap" if necessary
y = random(0, n - 60);
if(y > x - 30) {
y += 60;
x=random(0,n)
如果(x-30<0)
y=随机(x+30,n)
如果(x+30>n),则为else
y=随机(0,x-30)
其他的
//在本例中,x将范围0..n拆分为2个子范围。
//获取一个随机数,必要时跳过“间隙”
y=随机(0,n-60);
如果(y>x-30){
y+=60;
有意义吗?它基本上归结为“在0和n之间选择两个相差超过30的随机数”。上述方法不适用于n<60的情况。如果它们“必须”有任何东西,那么它们就不是随机的,甚至不是伪随机的。@Andrei:从具有已知属性的集合中进行随机选择是完全可以接受的(例如,区间[0,1]中的浮点数,[1,99]范围内的奇数整数,或者在OP的情况下,[COORD_MIN,COORD_MAX]中的整数对,两个元素都可以被30整除。)根据上下文,可能隐含或可能不隐含统一的概率分布。请更详细地解释您的要求;“相对差异”是什么意思是?你的例子只有四个不同的值,它们的差值都是60个单位的倍数。了解你想要实现的目标也很有帮助。之后你打算用这些坐标做些什么吗?我和前面的评论者有相同的问题:上面的例子以什么方式有“相对差值30”彼此之间?对不起,键入错误,是60。我将使用此坐标绘制包含正方形的图形,我不想重叠正方形。