0

我有一个应用程序,我需要将数据库中的数据填充到 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);
4

2 回答 2

2

你可以把你的观点放在一个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];
于 2013-05-11T14:17:30.237 回答
0

我觉得你的用法是错误的。

Random 类的正确用法是:

  1. 实例化类

    Random rnd1 = new Random();
    
  2. 比访问“随机”函数来获得一个随机数:

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

下一个功能

于 2013-05-11T14:11:53.750 回答