首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C++中生成随机20非重复数

在C++中生成随机20个非重复数,可以使用以下方法:

  1. 使用C++的随机数生成器函数rand()来生成随机数。
  2. 使用一个数组来存储生成的随机数,每次生成一个随机数后,检查数组中是否已经存在该数,如果存在则重新生成,直到生成一个非重复数为止。
  3. 使用循环生成20个非重复数。

下面是一个示例代码:

代码语言:txt
复制
#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    const int MAX_NUM = 100; // 生成的随机数的范围为0到99
    const int NUM_COUNT = 20; // 需要生成的非重复数的个数

    int numbers[NUM_COUNT]; // 存储生成的非重复数
    int count = 0; // 当前已生成的非重复数的个数

    // 设置随机数种子
    std::srand(std::time(0));

    while (count < NUM_COUNT) {
        int num = std::rand() % MAX_NUM; // 生成一个随机数

        // 检查数组中是否已经存在该数
        bool isDuplicate = false;
        for (int i = 0; i < count; i++) {
            if (numbers[i] == num) {
                isDuplicate = true;
                break;
            }
        }

        // 如果不存在,则将该数添加到数组中
        if (!isDuplicate) {
            numbers[count] = num;
            count++;
        }
    }

    // 输出生成的非重复数
    for (int i = 0; i < NUM_COUNT; i++) {
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

这段代码使用了rand()函数生成随机数,并通过循环和数组来确保生成的数是非重复的。其中,MAX_NUM表示生成的随机数的范围,NUM_COUNT表示需要生成的非重复数的个数。代码中使用了一个布尔变量isDuplicate来标记是否存在重复数,如果不存在,则将该数添加到数组中。最后,通过循环输出生成的非重复数。

请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行修改和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

20亿个随机整数找出m是否存在,你打算怎么存数据呢?

思考一个问题 假设有这样一个需求:20亿个随机整数找出某个数m是否存在其中, 并假设32位操作系统,4G内存 按照惯例,用int存储数据的话,Java,int占4字节,1字节=8位(1 byte...只有当数据比较密集时才有优势 2.快速去 20亿个整数找出不重复的整数的个数,内存不足以容纳这20亿个整数。 首先,根据“内存空间不足以容纳这05亿个整数”我们可以快速的联想到Bit-map。...主要应用于大规模数据下不需要精确过滤的场景,如检查垃圾邮件地址,爬虫URL地址去,解决缓存穿透问题等 如果想判断一个元素是不是一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。...1; 判断某个 key 是否集合时,用 k 个 hash 函数计算出 k 个散列值,并查询数组对应的比特位,如果所有的比特位都是1,认为集合。...实际工作避免不了会处理大量的数据,学会Bitmap这种思想处理实际问题一定会得心应手。 -END-

69430
  • c语言random函数vc,C++ 随机函数random函数的使用方法

    C++ 随机函数random函数的使用方法 一、random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C++下的rand函数来实现。...1、C++标准函数库提供一随机生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。...随机生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试) 2、C++另一函数srand(),可以指定不同的数(无符号整数变元)为种子。...但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。 3、 比较理想的是用变化的数,比如时间来作为随机生成器的种子。 time的值每时每刻都不同。...通常rand()产生的随机每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。

    5K20

    VS2010上使用C#调用托管C++生成的DLL文件(图文讲解) 背景

    背景      项目过程,有时候你需要调用C#编写的DLL文件,尤其使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。...创建一个C++的动态库项目: ? 3. 应用程序设置,选择“DLL”,其他按照默认选项: ? 最后点击完成,得到如图所示项目: ?      ...编译项目程序,最后Debug目录生成CSharpInvokeCPP.CPPDemo.dll和CSharpInvokeCPP.CPPDemo.lib ?...现在来演示下如何利用C#项目来调用托管C++的DLL,首先创建C#控制台应用程序: ? 7....以上的方法只能通过静态方法对于C++的函数进行调用。那么怎样通过静态方法去调用C++中一个类对象的方法呢?

    2.8K50

    Java生成指定范围的随机数,Java实现类似于PHP的rand()函数

    PHP,我们可以使用 rand() 函数来生成指定范围的随机数。而在Java,我们可以通过使用 java.util.Random 类来实现类似的功能。...下面是一个示例代码,用于Java实现类似于PHP的 rand() 函数: import java.util.Random; public class RandFunction { public...int max = 10; // 范围上限(不包括) int randomNumber = rand(min, max); System.out.println("随机数为...我们定义了一个名为 rand() 的方法,该方法接受一个范围的下限和上限作为参数,并使用 java.util.Random 类生成指定范围内的随机整数。... rand() 方法内部,我们使用 random.nextInt(max - min) + min 来实现这个功能。这样,我们就可以通过调用 rand() 方法来获取一个指定范围内的随机整数。

    26710

    随机函数:Rand,RandBetween

    这两个是可以生成随机数的函数 应用范围并不广 如果你是个彩票迷,可能会用它来确定你今天想要的数字 如果你需要随机数字测试,可能也会用到它 如果你想做一个抽奖Excel,可能会用到它 但是它没办法去 所以很多做不重复抽奖的都转而求向...VBA帮助 Rand() 这个函数是不需要参数的 没错,括号里面不需要输入任何内容 类似的零参数函数还有Today,Now 它的作用是生成[0,1)之间的任何数 注意,含0但是不含1 也就是你永远取不到...1 如果你要无限近似的取不重复数 这个函数比RandBetween更适合一点 因为它生成不重复数据的概率更大一点 (当然如果你愿意写无穷大的RandBetween上限那也是一样的效果) 就在上图随机生成的...22*6的矩阵 我们用条件格式看看不重复数据有多少 没有数字变色 如果需要扩充Rand的范围 可以用Rand()*(b-a)+a 来随机生成[a,b)范围内的数字 RandBetween(下限,上限...) 它可以随机生成[下限,上限]的整数 也就是从下限到上限,含双边界的随机整数 例如 我想买一注今晚的彩票 数字范围是1-20 随机生成一个好了 如果觉得不够随机 那就按住[F9]不要放手 给自己来个抽奖

    1.2K20

    77.如果用go语言, RANDOMIZED-QUICKSORT 的运行过程最坏情况下,随机生成器 RANDOM 被调

    二、如果用go语言, RANDOMIZED-QUICKSORT 的运行过程最坏情况下,随机生成器 RANDOM 被调用了多少次?最好情况下呢?以θ符号的形式给出你的答案?...文心一言: RANDOMIZED-QUICKSORT 的运行过程,最坏情况下,随机生成器 RANDOM 的调用次数为 O(n)。...这是因为最坏情况下,每次分区操作都会将数组分成大小相等的两部分,因此每次都需要从剩下的 n-1 个元素随机选择一个元素作为主元。...在这里插入图片描述 在这里插入图片描述 360智脑: RANDOMIZED-QUICKSORT ,最坏情况下,每次递归调用 quicksort() 函数时都需要调用 RANDOM 生成一个随机数...在这里插入图片描述 chatgpt: 随机化快速排序(RANDOMIZED-QUICKSORT)随机生成器 RANDOM 每次选择划分元素时被调用。

    31170

    3分钟快速实现:9种经典排序算法的可视化

    ,数组有无重复数据 如何实现排序算法 如何把数组可视化出来 一、如何表示数组 Python提供了list类型,很方便可以表示C++的数组。...二、如何得到随机采样数组,数组有无重复数据 假设我希望数组长度是100,而且我希望数组的大小也是[0,100)内,那么如何得到100个随机的整数呢?可以用random库。...基础的插入法排序是两循环,希尔排序是三循环,最外面一循环,控制增量gap,并逐步减少gap的值。二循环从下标为gap的元素开始比较,依次逐个跨组处理。最后一循环是对组内的元素进行插入法排序。...因为排序过程,每次修改数组,都希望能够实时修改图片并输出,matplotlib确实很方便,但是matplotlib的效率实在是不高,而且每次修改数组前后的两幅图片其实是差不多的。...所以考虑自己生成图片,每次修改数组后,只将图片中改动的那两列进行修改即可!这样就比用matplotlib每次重新绘制图片效率高得多!

    76150

    我用Python,3分钟快速实现,9种经典排序算法的可视化

    ,数组有无重复数据 如何实现排序算法 如何把数组可视化出来 一、如何表示数组 python提供了list类型,很方便可以表示C++的数组。...二、如何得到随机采样数组,数组有无重复数据 假设我希望数组长度是100,而且我希望数组的大小也是[0,100)内,那么如何得到100个随机的整数呢?可以用random库。...基础的插入法排序是两循环,希尔排序是三循环,最外面一循环,控制增量gap,并逐步减少gap的值。二循环从下标为gap的元素开始比较,依次逐个跨组处理。最后一循环是对组内的元素进行插入法排序。...因为排序过程,每次修改数组,都希望能够实时修改图片并输出,matplotlib确实很方便,但是matplotlib的效率实在是不高,而且每次修改数组前后的两幅图片其实是差不多的。...所以考虑自己生成图片,每次修改数组后,只将图片中改动的那两列进行修改即可!这样就比用matplotlib每次重新绘制图片效率高得多!

    78720

    我用 Python 3分钟实现9种经典排序算法的可视化

    作者:爱笑的眼睛 来源:恋习Python(ID:sldata2017) ▲6分钟演示15种排序算法 下面具体讲解以下实现的思路,大概需要解决的问题如下: 如何表示数组 如何得到随机采样数组,数组有无重复数据...如何实现排序算法 如何把数组可视化出来 01 如何表示数组 python提供了list类型,很方便可以表示C++的数组。...02 如何得到随机采样数组,数组有无重复数据 假设我希望数组长度是100,而且我希望数组的大小也是[0,100)内,那么如何得到100个随机的整数呢?可以用random库。...因为排序过程,每次修改数组,都希望能够实时修改图片并输出,matplotlib确实很方便,但是matplotlib的效率实在是不高,而且每次修改数组前后的两幅图片其实是差不多的。...所以考虑自己生成图片,每次修改数组后,只将图片中改动的那两列进行修改即可!这样就比用matplotlib每次重新绘制图片效率高得多!

    65640

    C++面向对象程序设计_Part1

    ++98标志c++1.0诞生,c++03是c++的一次科技报告,加了一些新东西,c++11加入了更多新的东西,标志着c++2.0的诞生,然后后面接着出现c++14,c++17,到现在的c++20。...c语言中,数据和函数是分开的,构造出的都是一个变量,函数通过变量进行操作,而在c++生成的是对象,数据和函数都包在对象,数据和函数都是对象的成员,这是说得通,一个对象所具有的属性和数据应该放在一块...操作符重载public,有四个函数,第一个是构造函数,目的是初始化复数,实虚部默认值为0,当传入实虚部时,后面的列表初始化会对private的数据进行初始化,非常推荐使用列表初始化数据。...模板可以只写一份模板代码,需要生成不同类型的class,编译器会自动生成,具体做法是类定义最上方加入template ,然后讲所有的double都换成T即可,初始化的时候,类的后面使用尖括号,尖括号中放入你想要生成的类型即可...探new与delete ? ?

    96920

    【python语言学习】基础合集

    浮点数 浮点数必须带有小数部分 pow() pow(x,y)=x的y次方 round round(x,d) 对x进行四舍五入,其中参数d指定保留的小数位数 复数 注意: 复数类型实部和虚部都是浮点类型...,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代 def 函数名(可选参数列表,可选参数=默认值): 函数体 return 返回值列表 可选参数一般都放置可选参数的后面...一个模块可以同时存储多个类 从一个模块中导入多个类 from 模块名 import 类名1,类名2 导入整个模块 import 模块名 导入整个模块,使用过程需要以句点的形式访问模块的类 eg...),即一个具有最高可用分辨率的时钟,以测量短时间,它包括了 time.perf_counter() 28.random库随机数据 random()生成一个[0.0,1.0)之间的随机小数 seed()...最终的打包程序dist内部与源文件同名的目录 pyinstaller -F 可以通过-F参数对Python源文件生成一个独立的可执行文件 pyinstaller

    2.2K10

    2761: 不重复数字(哈希表)

    2761: [JLOI2011]不重复数字 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1770  Solved: 675 [Submit][Status...第二行为要去的N个正整数。 Output 对于每组数据,输出一行,为去后剩下的数字,数字之间用一个空格隔开。...; 对于50%的数据,1 <= N <= 10000,给出的数不大于10000,均为负整数; 对于100%的数据,1 <= N <= 50000,给出的数32位有符号整数范围内。...提示: 由于数据量很大,使用C++的同学请使用scanf和printf来进行输入输出操作,以免浪费不必要的时间。...思路很清晰,只需要一个哈希表即可,关键我这样子简单取模的哈希函数,应该注意一点(貌似很多哈希函数都可能遇到此问题)——当哈希值取到0时,注意判断,否则很容易出现对于哈希值为0时去失败,我可是为此挂了一次的

    83750

    人脸识别的可解释性

    该论文中作者定义了一种新的评估方案,称为“修复游戏”,其任务是生成一个网络注意力图,最好地解释图像的哪些区域与匹配的图像匹配,这为量化哪些图像区域有助于人脸匹配提供了基本事实。...EBP计算穿越到卷积网络给定节点的概率,概率是由正权重和负权重激活得来。EBP的输出是一个显著图,它定位了图像对于给定类别的区域。EBP的原始公式考虑了交叉熵损失,以优化训练集中的最大分类。...该论文中作者通过引入先验分布来指导采样并进行改进,输入采样的先验密度是从具有三损失的白盒EBP得到的,如下图所示显示了论文中该方法的概述,该方法利用灰色(即屏蔽像素)来遮挡probe图像的小区域,...使用这个显著图作为生成随机掩模的先验概率,允许对最显著的空间进行采样比整个图像上假设均匀概率更有效地影响损失的掩模,这可以进一步有效地消除了掩模不重要的背景元素的可能性。...Numerical gradient 给定已经用从均匀先验采样的稀疏掩模的probe图像,可以计算三损失的数值梯度。

    2.5K20

    SQL语句逻辑执行过程和相关语法详解

    SQL没有使用ORDER BY时,有不少子句的返回结果(虚拟表)都是随机的,因为实在没办法去保证顺序,但却又要求返回数据。...因此,除非不得不显示随机数据,标准SQL都会通过一些手段让获取随机数据的行为失败,而且可能获取随机数据的时候,一般都会给出相关的建议和提示。...但MySQL和mariadb又在这里进行了扩展,它们的排序列允许select_list的列。 先说标准SQL为何不允许使用select_list的列,这归根结底还是关系型数据库的范式问题。...由此,已经足够说明为什么select_list不能使用group by的分组列。...例如上图中,如果先对StudentID去,那么去后将只有3行,这3行都是唯一值,没必要再去开窗,而且这也不符合开窗的目的。 因此OVER()是DISTINCT之前完成开窗的。

    3.6K20

    MATLAB数据类型和运算符+矩阵创建

    MATLAB复数运算可以直接进行。...2.3 逻辑运算符 4种逻辑运算符:&(与)、|(或)、~()和xor(异或)。 运算规则: (1)逻辑运算,所有零元素均被认为真,用1表示;零元素为假,用0表示。...逻辑“与”、“或”、“”三种运算符,“”的优先级最高,“与”和“或”的优先级相同,即从左往右执行。实际应用,可以通过括号来调整运算的顺序。...需要注意,txt文件不含变量名称,文件名为矩阵变量名,每行数值个数相等。 优点:可以将数据存储文本文件,利用load函数,直接将数据读入工作空间中,自动生成矩阵,而不需要手动输入数据。...6.5 0~1均匀分布随机矩阵 MATLAB语言生成0~1均匀分布的随机矩阵函数是rand,其调用格式如下: A1= rand(n)表示生成 n*n个元素值为0~1均匀分布的随机矩阵; A2= rand

    9410

    什么 是模型的记忆力!

    一句话概述:更大的模型更可能学到重复数据的特性,去是缓解模型记忆危害的不错策略。...方法 记忆的定义 如果存在一个长度为 k 的文本 p,通过模型 f + greedy decoding,可以生成文本 s,而 p+s 包含在训练数据,则称 s 是可提取的。...其他定义包括:差异隐私或反事实记忆的下限(需要大量模型评估隐私,对大模型不合适);计算曝光(每个序列需要数千个生成,为精心设计训练样本设计,大规模实验不可行);k-eidetic 记忆,对提示的记忆是个有用的定义...复数据上训练的 LM 共三组结果,分别是:C4,删除近似重复的文档后的 C4,删除长度为 50 Token 的重复后的 C4。...结果如上图 c 所示,去后记住的要更少,但只有重复 100 次以下时有效,重复超过 100 次后就没用了,可能意味着重复数据删除并未彻底(重复的不同但有效的定义)。

    64030

    Numpy

    一样可以用来生成符合任意概率分布的**伪随机数,**内置的 random 一次只生成一个随机数(大样本下速度会慢很多)。...之所以叫做伪随机数是因为这种随机数是根据随机生成器的种子形成的。我们可以通过np.random.seed()修改种子,这是一个全局变量。...数组元素去 arr = np.random.randint(1,10,size = 12) #生成随机数 print('创建的数组为:',arr) print('去后的数组为:',np.unique...(arr))#去并排序 arr=arr.reshape(3,4) print('改变形状后的数组为:\n',arr) print('改变形状后的数组去后为:',np.unique(arr)) 重复数据...#x,y平面内随机生成两类各num个正态分布的点,并分别添加类标签,形成数据集X num=100#100个样本点 #生成类c0,类标签为0 c0_x0,c0_y0=0,0#设置类c0样本中心 c0_

    1.2K10

    python的numpy入门简介

    对于复数值,可以使用更快的fabs。 sqrt 计算各元素的平方根。相当于arr ** 0.5 sqare 计算各元素的平方。...))] 利用数组进行数据处理 去以及其它集合运算 • 去以及其它集合运算 用unique函数去 names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will...in1d(x, y) 得到一个表述"x的元素是否包含于y"的布尔型数组 setdiff1d(x, y) 集合的差,即元素x且不在y setxor1d(x, y) 集合的异或,即存在于一个数组但不同时存在于两个数组的元素...lstsq 计算Ax = b的最小二乘解 随机生成 • 部分numpy.random函数 seed 确定随机生成器的种子 permutation 返回一个序列的随机排列或返回一个随机排列的返回 shuffle...正态分布随机数:np.random.normal(size=(4, 4)) 批量按正态分布生成0到1的随机数:N = 10 print[normalvariate(0, 1) for _ in xrange

    1.4K30
    领券