具有检查功能的简单数字生成器,以避免重复
Simple number generator with check function to avoid repeating
我正在尝试编写一个简单的函数来检查随机生成的值是否已经在数组中。我想简单地到达一个数字生成器而不重复。不幸的是,我的代码不起作用。我的意思是,它仍然会给我产生重复的值。有人能告诉我我做错了什么吗?
检查数组中是否存在值:
bool valueExistsInArray(int* array, int value) {
if ((sizeof(array) / sizeof(*array)) <= 0)
return false;
int i = 0;
do {
if (array[i] == value)
return true;
i++;
} while (i < (sizeof(array) / sizeof(*array)));
return false;
}
从指定范围生成随机值:
int generateRandomValue(int from, int to) {
return (std::rand() % (to-from+1)) + from;
}
主要功能:
int main()
{
srand((unsigned int)time(NULL));
int array[10];
int i = 0;
do {
int value = generateRandomValue(1, 10);
if (!valueExistsInArray(array, value)) {
array[i] = value;
i++;
}
} while (i < (sizeof(array) / sizeof(*array)));
for (int i = 0; i < (sizeof(array) / sizeof(*array)); i++)
std::cout << "Index: " << i << " Value: " << array[i] << "n";
_getch();
return 0;
}
如何使用现代c++的简单示例
#include <random>
#include <set>
#include <iostream>
int main()
{
const uint32_t minValue = 0;
const uint32_t maxValue = 1000000;
const size_t numValues = 100;
std::random_device rd;
std::uniform_int_distribution<int> dist(minValue, maxValue);
std::set<uint32_t> myNumbers;
while (myNumbers.size() < numValues)
{
myNumbers.insert(dist(rd));
}
for (const auto& val : myNumbers)
{
std::cout << val << "n";
}
return 0;
}
random_device和均匀分布为您提供适当的随机值。
"set"负责过滤重复项。
如果你只想打乱一个向量,例如数字0到100,请使用std::shuffle,例如:
#include "stdafx.h"
#include <algorithm>
#include <random>
#include <vector>
#include <iostream>
int main()
{
std::random_device rd;
std::mt19937 g(rd());
std::vector<uint32_t> myNumbers(100);
std::iota(myNumbers.begin(), myNumbers.end(), 0);
std::shuffle(myNumbers.begin(), myNumbers.end(), g);
for (const auto& val : myNumbers)
{
std::cout << val << "n";
}
return 0;
}
相关文章:
- C++模板功能检查唯一向量
- Vulkan 的传输队列系列功能和显卡支持:条件检查是否准确?
- winapi 中的哪个功能检查按钮是否正在关闭控制台?
- 检查两个图是否为补码的功能
- 具有检查功能的简单数字生成器,以避免重复
- 用于检查我们是否有有效数独的辅助功能
- 自定义 {fmt} 格式化函数,具有编译时格式字符串检查功能
- 模板功能以检查智能指针是否为空
- 检查数字在C 中未返回正确结果的功能
- 在C/C 中使用检查功能的Windows NT命令行代码循环
- 重复的名称检查功能数组
- 在 c++e 中使用 do-while 循环进行密码检查功能时出现错误"code will never execute"
- 支架检查功能仅测试输入的前 2 个
- 如何实现更快的状态检查功能?蟒
- 如何检查功能是否存在
- Dynamic_cast类型检查功能没有铸件
- 检查功能进入无限循环和分段错误
- 使用检查功能查找给定范围内的所有回文数
- 内置素数检查功能
- 检查功能比较问题