选择系列

时间:2016-03-17 13:21:18

标签: c# math random logic

我想知道如何选择最多六个之间的任意随机数的逻辑 0到8,其中如果(0,1)或(1,2)或(0,2)被选中则不再选择0到2中的剩余一个数字,如果(3,则为3到5系列) 5)或(3,4)或(4,5)被选中,则不应选择剩余的一个数字。

因此,例如在0到8系列中,六个数字可以是(0,1,3,5,6,8)或(1,2,4,5,7,8)或(0,1,3)或(4,6)等

这些点是一种产生点,所以如果所有0-2点都被填充,那么路径将被阻止以便玩家继续前进。

这是我做的,它有点工作,但我认为它可以改善灵活性和性能,

public static int[] getPointsToSpawn(int howManyToSpawn, int tillWhereToSpawn) {
    int[] howMany = new int[howManyToSpawn];
    List<int> randomCOllected = new List<int>();

    for (int i = 0; i < howManyToSpawn; i++) {

        int randomPoint = generateUniqueRandomNumber(0, tillWhereToSpawn, randomCOllected);
        randomCOllected.Add(randomPoint);

        if (randomCOllected.Contains(0) && randomCOllected.Contains(1) ||
                randomCOllected.Contains(0) && randomCOllected.Contains(2)
                || randomCOllected.Contains(1) && randomCOllected.Contains(2)
                ) {
            randomCOllected.Add(0);
            randomCOllected.Add(1);
            randomCOllected.Add(2);
        } else if (randomCOllected.Contains(3) && randomCOllected.Contains(4) ||
                randomCOllected.Contains(3) && randomCOllected.Contains(5)
                || randomCOllected.Contains(4) && randomCOllected.Contains(5)
                ) {
            randomCOllected.Add(3);
            randomCOllected.Add(4);
            randomCOllected.Add(5);
        } else if (randomCOllected.Contains(6) && randomCOllected.Contains(7) ||
                randomCOllected.Contains(7) && randomCOllected.Contains(8)
                || randomCOllected.Contains(6) && randomCOllected.Contains(8)
                ) {
            randomCOllected.Add(6);
            randomCOllected.Add(7);
            randomCOllected.Add(8);
        }
        howMany[i] = randomPoint;
    }
    return howMany;
}

基本上我不希望在0到2或3到5或6到8范围之间生成超过2个数字。

1 个答案:

答案 0 :(得分:0)

非常简单。你需要三个链接:

  1. 选择0到2之间的两个随机数
  2. 选择3到5之间的两个随机数
  3. 选择6到8之间的两个随机数
  4. 您可以查看此帖子以查看代码示例: How do I generate a random int number in C#?