文档章节

快速获取[0,n]之间的k个不同的随机顺序的随机整数

BlackJoker
 BlackJoker
发布于 2015/10/13 13:24
字数 238
阅读 7
收藏 0
如果生成位于0到n-1之间的k个不重复的随机顺序的整数呢?
/**
	 * 随机抽取[0,n)之前的k个不同的数并随机排序,(k<=n)
	 * 
	 * @param n
	 * @param k
	 * @return 随机排序的数组,长度为k
	 */
	public static int[] getRandomArray(int n, int k) {
		if (k > n) {
			k = n;
		}
		int[] rets = new int[k]; // 保存取出的随机数
		int[] array = new int[n];// 定义初始数组
		for (int i = 0; i < n; i++)
			array[i] = i;
		Random random = new Random();
		for (int j = 0; j < k; j++) {
			int index = j + random.nextInt(n - j);// 生成一个[j,n)之间的随机数,作为数组下标
			// 交换array[j]和array[index],那么array[0..j]为已经获取到的随机数
			int temp = array[index];
			array[index] = array[j];
			array[j] = temp;
			// 把此次获取到的随机数存到rets里面
			rets[j] = temp;
		}
		return rets;
	}

来自《编程珠玑(第二版)》第一章习题4

© 著作权归作者所有

共有 人打赏支持
BlackJoker
粉丝 1
博文 17
码字总数 9270
作品 0
深圳
高级程序员
私信 提问
Java经典算法编程题目

定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值, 最小值,平均值,和值,并输出出来。 class ArrayNumber{ public static void main(String[] args...

浮躁的码农
2016/06/12
123
0
Python random 模块

常见api random.seed(a=None, version=2) # 初始化伪随机数生成器。如果未提供a或者a=None,则使用系统时间为种子。如果a是一个整数,则作为种子。 random.getstate() # 返回一个当前生成器的...

阿豪boy
2018/02/05
0
0
python中的随机数random

1、常规用法random 1 ) random() 返回0<=n<1之间的随机浮点数n; 2)random.uniform(a, b),用于生成一个指定范围内的随机符点数 3)random.randint(a, b),用于生成一个指定范围内的整数 4)...

pbgc396dwxjb77f2je
2017/11/26
0
0
JS产生随机数的几个用法!

JS产生随机数的几个用法! var chars = ['0','1','2','3','4','5','6','7','8','9...

乜波
2014/05/12
0
0
range()、np.arange()和np.random相关总结

range()和xrange()函数 在 python 2.x 版本中,同时存在range()和xrange()函数,其中,range()返回值是一个列表,xrange()返回值是一个迭代器; 在 python 3.x 版本中,取消了xrange(...

他与理想国
2018/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
5
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部