编程珠玑之1.4生成小于n且没有重复的k个整数

简介:

生成小于n且没有重复的k个整数可以使用如下方法:

方法一:使用C++的set,由于set具有排序功能,而且里面的数不会重复,所以可以生成随机数字插入到set中,直到set中的数字个数为k,具体代码如下:

//solution 1:use set

#include<iostream>
#include<set>
#include<ctime>
#include<cstdlib>

using namespace std;

#define N 10000000

int main()
{
	set<int> S;
	set<int>::iterator j;
	int i;
	int k;

	cout<<"please input k:"<<endl;
	cin>>k;

	srand((unsigned)time(NULL));
	
	//gererate k numbers by random and put them into S
	while(S.size() < k)
	{
		i = rand()%N;
		S.insert(i);
	}

	for(j=S.begin();j!=S.end();j++)
		cout<<*j<<"    ";
	return 0;
}

方法二:使用一个数组,按顺序存放n个数,然后把数组中到数字打乱,取前k个数字。代码如下

#include<cstdlib>
#include<iostream>
#include<ctime>

using namespace std;

#define N 10000000
void swap(int a,int b);
int main()
{
	int i;
	int k;
	int *num = new int[N];

	cout<<"please input k:";
	cin>>k;
	//initialized num array
	for(i = 0;i < N;i++)
		num[i] = i;

	//swap numbers of array
	srand((unsigned)time(NULL));
	for(i = 0;i < k;i ++)
		swap(num[i],num[rand()%N]);

	//output numbers
	for(i = 0;i < k;i ++)
		cout<<num[i]<<"    ";
	
	delete[] num;
	cout<<endl;
}

void swap(int a,int b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}

 

       

相关文章
|
10月前
|
传感器 监控 自动驾驶
智能交通系统:构建未来城市交通的神经中枢####
本文旨在探讨智能交通系统(ITS)的核心技术、应用现状及未来发展趋势。通过分析ITS如何利用先进的信息技术、数据通信传输技术、电子感知技术等,实现交通管理的智能化、自动化,从而提升交通效率、保障交通安全、减少环境污染。文章还展望了ITS在自动驾驶、车路协同等领域的应用前景,为构建未来智慧城市提供有力支撑。 ####
|
11月前
|
设计模式 网络协议 Java
10.桥接模式设计思想
本文介绍了桥接模式的设计思想和实现方法。桥接模式通过将抽象部分与实现部分分离,使它们可以独立变化,解决了多层继承带来的复杂性和耦合性问题。文章详细讲解了桥接模式的由来、定义、应用场景和实现步骤,并通过具体实例演示了如何在支付场景中使用桥接模式。此外,还讨论了桥接模式的优缺点及其适用环境,提供了丰富的代码示例和进一步学习的资源链接。
318 2
|
传感器 机器学习/深度学习 自动驾驶
自动驾驶中的感知模型:实现安全和智能驾驶的关键
自动驾驶中的感知模型:实现安全和智能驾驶的关键
336 9
|
人工智能 安全 API
【LangChain系列】第十篇:数据保护简介及实践
【5月更文挑战第24天】本文探讨了在使用大型语言模型时保护个人数据的重要性,特别是涉及敏感信息如PII(个人可识别信息)的情况。为了降低数据泄露风险,文章介绍了数据匿名化的概念,通过在数据进入LLM前替换敏感信息。重点讲解了Microsoft的Presidio库,它提供了一个可定制的文本匿名化工具。此外,文章还展示了如何结合LangChain库创建一个安全的匿名化流水线,包括初始化匿名器、添加自定义识别器和操作符,以及在问答系统中集成匿名化流程。通过这种方式,可以在利用LLMs的同时保护数据隐私。
404 0
|
测试技术
测试资源不足怎么办?
测试资源不足怎么办?
386 0
|
Java Windows
为什么线程中断不了?
怎么让运行到一半的线程中止掉??
606 1
为什么线程中断不了?
|
存储 应用服务中间件 开发者
SpringMVC @RequestHeader @CookieValue 处理获取请求参数的乱码问题
SpringMVC @RequestHeader @CookieValue 处理获取请求参数的乱码问题
279 0
|
存储 缓存 数据库
如何在小游戏制作工具中使用云数据库持久保存用户的数据
前言 这可能是你能从网上找到的唯一一篇在微信小游戏制作工具中使用云数据库的教程了。通过这篇教程你将能学会如何在小游戏制作工具中使用云数据库添加,更新和查询玩家的数据。使用云数据库保存玩家数据的好处是,当你每次更新小游戏时,玩家都能够获取到之前保存的游戏数据,继续进行游戏。
629 0
|
数据采集 人工智能 监控
三大模块构建智慧养鹿综合解决方案,阿里云AIoT推动畜牧业绿色发展
鹿作为畜牧业中的特种养殖之一,如今在畜牧业规模化发展的趋势下,传统的鹿养殖业模式已无法满足规模化的发展需求。阿里云AIoT作为行业的创新者和引领者,深耕与畜牧业,基于物联网技术赋能鹿养殖业,通过智慧养鹿综合解决方案,为鹿养殖业带来数字化改造。
987 2
三大模块构建智慧养鹿综合解决方案,阿里云AIoT推动畜牧业绿色发展
|
存储 算法 关系型数据库
InnoDB数据存储结构
InnoDB数据存储结构整理
307 0

热门文章

最新文章