文档章节

快速获取[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
深圳
高级程序员
Python random 模块

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

阿豪boy
02/05
0
0
Java经典算法编程题目

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

浮躁的码农
2016/06/12
123
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
C#安全随机数生成算法和安全性分析

如何评价一个随机数算法?个人认为,一个好的随机数算法,能提供足够的安全性和公平性,并拥有优异的性能。 真随机数发生器由于价格昂贵,并没有得到普遍采用。那么,伪随机数就出来了,比如s...

梁金堂
2016/11/30
110
0

没有更多内容

加载失败,请刷新页面

加载更多

关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
44分钟前
1
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
4
0
Redis的“死键”问题

大规模的数据库存储系统中,数据的生命周期管理是很有必要的;从业务角度发现过期数据,数据归档和数据碎片整理等。以MySQL为例,1个运行很久的TB级MySQL实例中,极有可能数百GB的数据,对业...

IT--小哥
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部