首页 > 解决方案 > 如何在 C++ 中的数组中生成唯一值

问题描述

问候,

我正在编写一个函数,它为彩票游戏生成一个介于 1 到 49 之间的随机值数组。将随机值分配给数组中的每个插槽很容易(已经编写了一个功能值生成器),对数组中的值进行排序也是如此,但是我必须验证它们都是唯一的。

提前感谢您的任何帮助,无论是直接在这里还是通过向我指出好的方向。(通过提示的建议没有找到我正在寻找的东西。)

    void generateLottery(short lottery[], const short LENGTH, const short MIN, const short MAX) {
    for (short i = 0; i < LENGTH; i++) {
        short counter = 0;
        lottery[i] = generateRandomValue(MIN, MAX);
        while (lottery[counter] != NULL) {
            if (lottery[i] == lottery[counter]) {
                lottery[i] = generateRandomValue(MIN, MAX);
            }
            counter++;
        }
    }
    sortLottery(lottery, LENGTH);
}

标签: c++algorithmvalidation

解决方案


创建一个由 49 个整数组成的数组,编号从 1 到 49。随机播放数组。选择第一个n元素。您现在拥有n1,49 范围内的唯一随机数。

简单的洗牌:

  1. 从索引 0 开始。
  2. 生成随机数 % 49。
  3. 将 arr[index] 与 arr[randomnumber] 交换。
  4. 重复索引 1,2,3,4...48。

推荐阅读