标签的随机点

本文关键字:随机 标签 | 更新日期: 2023-09-27 18:13:03

我有一个应用程序,我需要从数据库中填充数据到4个标签,我希望这些标签出现在随机位置x,但在以下位置x: 79,199,437,319。

我试图使用Random类,但它偶尔返回相同的位置。有人能解决这个问题吗?我希望下面的answer1 - answer 4在每次运行应用程序时都洗牌位置。

answer1.Location = new Point(79, 60);
answer2.Location = new Point(199, 60);
answer4.Location = new Point(437, 60);
answer3.Location = new Point(319, 60);

标签的随机点

你可以把你的点放在List<Point>:

var list = new List<Point>
    {
        new Point(79, 60),
        new Point(199, 60),
        new Point(319, 60),
        new Point(437, 60)
    };

然后用Fisher-Yates算法洗牌

var rand = new Random();  
var n = list.Count - 1;  
for(var n = list.Count; n > 0; n--)
{
    int k = rng.Next(n - 1);  
    var value = list[k];  
    list[k] = list[n];  
    list[n] = value;  
}

然后使用:

answer1.Location = list[0];
answer2.Location = list[1];
answer3.Location = list[2];
answer4.Location = list[3];

我想你的用法是错误的。

Random类的正确用法是:
  1. 实例化类

    Random rnd1 = new Random();
    
  2. 然后使用"random "函数获取随机数字:

    var yourrand = Random.Next(437 /*The maximum*/);
    
下函数