• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++编写生成不重复的随机数代码

C++编写生成不重复的随机数代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++随机数函数,c++随机数,c++怎样生成随机数,c++随机数生成,c++产生随机数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C++编写生成不重复的随机数代码

vector<int> getRandom(int total)
{
  srand((int)time(NULL));
  std::vector<int> input = *new std::vector<int>();
  for (int i = 0; i < total; i++) {
    input.push_back(i);
  }
  vector<int> output = *new vector<int>();
   
  int end = total;
  for (int i = 0; i < total; i++) {
    vector<int>::iterator iter = input.begin();
    int num = random()%end;
    iter = iter+num;
    output.push_back(*iter);
    input.erase(iter);
    end--;
  }
   
  return output;
}
</div>

再来一例:

void permutation(int n, int *z_array)
{
  int i, j, k, z;
  int buffer[N];

  /* 初始化数组 */
  for (i=0; i<n; i++)
    buffer[i]=0;

  /* 准备生成随机数,以当前时间为种子 */
  srand((unsigned)time((long *)0));

  /* 获得不重复的随机数据 */
  for (i=0; i<n; i++) {
    /* 获得0~(n-i)的随机数据 */
    z = rand()%(n-i);
    j=0; k=0;
    while (j<=z) {
      if (buffer[j+k]==0) j++;
      else k++;
    }
    buffer[j+k-1]=1;
    z_array[i]=j+k-1;
  }
  return;
}
</div>

方法三:来个复杂点的

#include<stdio.h>
#include <time.h>
#include "iostream"
#include <math.h>
#define N 53
using namespace std;

//print array
void display(int *a)
{
    for (int i =0;i<N;i++)
    {
      cout<<" "<<a[i]<<" ";
    }

}

int main(void)
{

  int b[N],a[N];
  for (int i =0;i<N;i++)
  {
    b[i] = i+1;
  }
  // random(a);
  srand((unsigned)time(NULL));
  int MaxIndex = N;
  for ( i= 0;i<N;i++)
  {

  // 
    int index = (int)rand()%MaxIndex;//随机一个 0 - 52的index
    a[i] = b[index];    //随机到的数字给a[i],i from 0 to N-1
    b[index] = b[MaxIndex-1];
    MaxIndex--;

  }
    display(a);
  return 0;
} 
</div>

以上3种方法均可实现生成不重复的随机数,具体的效率如何,小伙伴们自己测试下吧。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 简单谈谈关于C++中大随机数的问题
  • 使用C/C++语言生成一个随机迷宫游戏
  • C++中的friend函数详细解析
  • 关于C++中定义比较函数的三种方法小结
  • 简单解读C++中的虚函数
  • C++随机数生成实例讲解
  • C++中基本的输入输出函数使用指南
  • C++编写生成不重复的随机数代码
  • c++制作的时间函数类
  • C++中函数的用法小结

相关文章

  • 2017-05-28浅析多维数组的下标重载
  • 2017-10-15ST17H26移植软时钟代码
  • 2022-04-30C语言指针变量的运算(加法、减法和比较运算)
  • 2017-05-28C++标准模板库函数sort的那些事儿
  • 2017-05-28C++编写生成不重复的随机数代码
  • 2017-05-28浅析C语言中的sizeof
  • 2017-05-28解析C++哈夫曼树编码和译码的实现
  • 2017-05-28C语言中的内存泄露 怎样避免与检测
  • 2017-05-28深入探讨C++父类子类中虚函数的应用
  • 2017-05-28深入浅析STL vector用法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何用C语言去除字符串两边的空字符
    • 深入探讨:main函数执行完毕后,是否可能会再执行一段代码?
    • C数据结构之双链表详细示例分析
    • 数据结构 哈希表设计
    • 进制转换:二进制、八进制、十六进制、十进制之间的转换
    • 解析设计模式中的Prototype原型模式及在C++中的使用
    • C++联合体union用法实例详解
    • 构建mfc窗体的简单示例
    • C++ 遍历目录下文件简单实现实例
    • C语言中isdigit()函数和isxdigit()函数的用法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有