我四处寻找一种可以转换这段代码的函数
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
void ran(int array[], int max);
int main() {
printf("Today's lottery numbers are:\n");
for (int i = 0; i < 6; i++)
srand((unsigned)(NULL));
}
进入确保没有重复数字的随机数生成器有人可以帮助我吗?检查后我打算用 printf("%d\n", rand()%50);
我只需要一个确保它不重复的例程。请如果你能给我一个例程,我会大大放心,一定会付出代价。
谢谢。这些库在这个屏幕上似乎没有正确读取,但它们是 stdio、stdlib 和时间,并且我正在使用命名空间。
最佳答案
为什么不直接使用 STL 中已有的内容呢?查看您的示例代码,并假设它在某种程度上代表了您想要执行的操作,那么所有内容都应该在其中。 (我假设您需要相对较小的数字范围,因此内存不会成为限制)
使用 std::random_shuffle
和包含您希望数字所在范围内的整数的 std::vector
应该会为您提供一个唯一的序列您在示例代码中需要的随机数。
在使用 std::random_shuffle
之前,您仍然需要调用 srand 一次,并且仅调用一次。不像您在当前代码示例中所做的那样多次。
关于C++无重复数随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111214/