C++无重复数随机数生成器

标签 c++ visual-c++

我四处寻找一种可以转换这段代码的函数

#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/

相关文章:

c++ - 诊断 Mac OS X 上的堆碎片?

c++ - 在 C++ 中暂停 - 哪种方法?

c++ - 忽略 gcc/clang 的 "-Wmissing-braces"警告是否明智?

c++ - 我可以让 VC++ Intellisense 忽略一些它认为无效的东西吗?

c - MS VS 2008 中 __declspec(dllimport) 的用法

C++从txt文件读取到对象二叉树

c++ - 在 Thrust 的函数内部使用多态仿函数

c++ - 仅使用数值格式化 wx.TextCtrl - 浮点精度

visual-c++ - Visual C++ 2012 缺少 mspdb110.dll

visual-c++ - 如何中止使用 wininet 发送的请求?