文档章节

快速获取[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
02/05
0
0
JS产生随机数的几个用法!

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

乜波
2014/05/12
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
生成随机数模块random

一、random模块简介 Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。 二、random模块重要函数 1 )、random() 返...

chengpeng21186
2017/06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈Redux中间件的实践

最近项目前端开发框架采用React+Redux进行实现,但是,如何异步访问服务器端,以及想要在开发过程中进行状态树日志的输出,所以怎么才能解决这两个问题? 采用Redux中间件 为什么要使用中间件...

peakedness丶
13分钟前
0
0
大数据教程(8.1)mapreduce核心思想

上一章介绍了hadoop的HDFS文件系统的原理及API使用。本章博主将继续对hadoop的mapreduce编程框架进行分享。 mapreduce原理篇 mapreduce是一个分布式运算程序的编程框架,是用户开发“基于had...

em_aaron
20分钟前
0
0
Vue与Node.js通过socket.io通信的示例

#一、Node中socket.io基础 1、是什么 Socket.IO类库,是在服务器和浏览器之间提供一个共享接口,其可以用于实现以下几种通信方式: HTML5中的WebSocket通信 Flash中使用的WebSocket通信 XHR轮...

前端攻城老湿
25分钟前
1
0
JavaScript的组成 | DOM/BOM

往期回顾 在上一期的《JavaScript的组成 | 核心-ECMAScript 》☜里,我们有说到JavaScript 是由三大部分组成,分别是:核心ECMAScript、文档对象模型-DOM、浏览器对象模型-BOM 那么本期就让我...

我的卡
29分钟前
0
0
三, 跨语言微服务框架 - Istio官方示例(自动注入.请求路由.流量控制.故障注入)

基础的Istio环境已经搭建完成,我们需要开始了解Istio提供作为微服务网格的各种机制,也就是本文标题的自动注入.请求路由.故障注入.流量切换,官方很给力的准备的实例项目也不需要大家自己编写d...

喵了_个咪
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部