Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 随机X-Y坐标_C# - Fatal编程技术网

C# 随机X-Y坐标

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)坐标,但我不知道怎么做。坐标之间的相对差值必须为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 = 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。我将使用此坐标绘制包含正方形的图形,我不想重叠正方形。