c++ - 如何在 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);
}
解决方案
创建一个由 49 个整数组成的数组,编号从 1 到 49。随机播放数组。选择第一个n
元素。您现在拥有n
1,49 范围内的唯一随机数。
简单的洗牌:
- 从索引 0 开始。
- 生成随机数 % 49。
- 将 arr[index] 与 arr[randomnumber] 交换。
- 重复索引 1,2,3,4...48。
推荐阅读
- flutter - card List view in Flutter from Object
- java - 通过 IntelliJ 中的 Tomcat 进行 Jar
- excel - 如何在没有多用户锁定的情况下使用 Excel VBA 应用程序?
- laravel - 单击特定链接时 Laravel 路由错误
- python - 如何将同一数据框中的多个列合并为一个,以数组形式表示?
- c++ - 指针,静态成员函数
- java - 无法填充 JAXB pojo 类以使用工厂方法制作 XML 文件
- typescript - 盖茨比:使用带有 Typescript 的 SASS 模块
- php - Return function results based on condition - PHP
- ios - iOS Swift 导航标题未显示