首页 > 编程语言 >C++随机数

C++随机数

时间:2023-12-07 22:57:45浏览次数:37  
标签:std rand arr 重复 C++ 随机数

C++中产生随机数的方式有产生一个随机数和产生一系列不重复的随机数两种方式;

1. 产生单个随机数

  1. 通过 rand() 函数,需要先设置不同随机数种子,否则后面生成的每个随机数都一样,在此可以使用当前的时间作为种子。
    #include <cstdlib>
    #include <random>

    srand((unsigned)time(NULL)); // 需要设置随机数种子,否则每次生成的随机数相同
    int num = rand();
  1. 取一定范围内的随机数
    要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
    要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
    要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

2. 生成一个范围内的不重复的随机数

由于生成的随机数可能会出现重复的,所以如果需要生成的随机数是不重复的,可以换一种方式:

  • 先生成一定范围内的顺序数值,这样可以保证数值各不相等
  • 将该顺序数值打散,然后取前指定项,即可等同于取该范围内的不重复随机数

如取 0~10 之间的 6 各随机数:

    // arr 中用来存放索引
    vector<int> arr(11);

    for(int i = 0; i < 11; i++)
    {
        arr[i] = i;
    }

    // 将数组的顺序打乱,然后取前面的 6 项,相当于在这个范围内取 6 个不重复的随机数
    std::random_device rd;
    std::mt19937 g(rd());
    std::shuffle(arr.begin(), arr.end(), g);

标签:std,rand,arr,重复,C++,随机数
From: https://www.cnblogs.com/Jeffxu/p/17884177.html

相关文章

  • C++socket服务器与客户端简单通信流程
    服务器和客户端简单通信的流程,做一个简单的复习:1.服务器创建的流程代码如下,各个重要函数已经写注释:#include<iostream>//推荐加上宏定义#defineWIN32_LEAN_AND_MEAN#include<winsock2.h>#include<Windows.h>#pragmacomment(lib,"ws2_32")usingnamespacestd;i......
  • C++学习笔记
    目录关键字const枚举switchcase函数常用函数代码块指针智能指针引用类与对象this指针静态成员静态成员变量静态成员函数继承与多态与抽象类动态内存拷贝浅拷贝命名空间I/O文件和流异常处理捕获异常抛出异常模板函数模板类模板STL容器(Containers)vectormap算法(Algorithm)迭代器(Itera......
  • C++(Protocol Buffers)
    ProtocolBuffers(简称Protobuf)是由Google开发的一种轻量级、高效、可扩展的数据序列化协议。它旨在成为一种语言无关、平台无关、可扩展、高效的数据交换格式。Protobuf通常用于在不同的系统或组件之间进行数据通信,如在分布式系统中,或者作为数据存储格式。以下是ProtocolBu......
  • C++(new操作符)
    在C++中,new操作符用于在动态内存(heap)上为对象动态分配内存,同时会调用对象的构造函数进行初始化。它返回一个指向新分配的内存空间的指针。new操作符的一般语法如下:cppCopycodenewtypenewtype[expression]其中,type是要分配内存的数据类型,expression是一个表示要分配......
  • 一文详解安全随机数
    本文分享自华为云社区《【安全攻防】深入浅出实战系列专题-安全随机数》,作者:MDKing。随机数的使用场景使用随机数可分类安全场景跟非安全场景。非安全场景需要生成的越快越好。安全场景使用的随机数必须足够安全,保证不能被预测到。常见的非安全场景:数据的索引号、标识;......
  • C++/CLI 包装引用 Native C++ 简单测试
    托管C++这个项目名:CppCLI。Animals.h#pragmaonceusingnamespaceSystem;namespaceZoological{publicrefclassAnimals{public:intGetLegs();voidSetLegs(intlegs);String^GetName();voidSetName(String^nam......
  • 一文详解安全随机数
    本文分享自华为云社区《【安全攻防】深入浅出实战系列专题-安全随机数》,作者:MDKing。随机数的使用场景使用随机数可分类安全场景跟非安全场景。非安全场景需要生成的越快越好。安全场景使用的随机数必须足够安全,保证不能被预测到。常见的非安全场景:数据的索引号、标识;文件的名称或......
  • 云课五分钟-05一段代码修改-AI修改C++
    前篇:云课五分钟-04一段代码学习-大模型分析C++在前一节,使用大模型工具文心一言等可以帮助分析代码,加快理解。信息时代→智能时代,系统学习转为碎片学习。发散思维的能力在智能时代尤为重要。 同样我们也可以借助智能化工具修改代码,提出自己的需求。所有的云课五分钟,不仅演示可行案......
  • 阅读《Effective c++》第三版 day 3
    ·考虑提供更搞效且安全的swap函数:对于一般缺省的swap函数,可能引发拷贝构造函数,导致性能下降,swap应设计为提供异常安全性保障而不抛出异常,但缺省版本的swap时可能抛出的,所以重新设计swap是应该的。此前设计operator=函数也有稍微提过。此外考虑类的设计模式,也会有低效率的swap......
  • C++中的函数重载(C++Primer)
    一、什么是函数的重载在同一作用域下,几个函数的函数名相同,但其内部的形参列表不同,我们称之为函数的重载,这里的不同不仅仅指形参数量的不同,还包括形参类型的不同。voidprint(constchar*const_p);voidprint(constchar*begin,constchar*end);voidprint(constint*const_p)......