您的位置:首页 > 其它

随机数、序列数生成、数组排序

2015-09-23 15:43 369 查看
// 随机数
	public static final Random random = new Random();
	
	/** 生成[0, n)范围的随机整数 */
	public static int random(int n)
	{
		return random.nextInt(n);
	}
	
	/** 生成[lower, upper]范围的随机整数 */
	public static int random(int lower, int upper)
	{
		if (lower > upper)
			return random(upper, lower);
		else
			return random.nextInt(upper - lower + 1) + lower;
	}


/** 序列数生成算法,生成1到n的随机序列数组,每个数值出现且仅出现一次 */
	public static int[] getSerial(int n)
	{
		Random Rnd = new Random();
		
		int[] tmp = new int
;
		int[] num1 = new int
;
		for (int i0 = 1; i0 <= n; i0++)
			num1[i0 - 1] = i0;
		
		for (int i = num1.length; i > 0; i--)
		{
			Rnd.setSeed(Rnd.nextLong());
			int index = Rnd.nextInt(i);
			
			// 随机选中一个数
			tmp[i - 1] = num1[index];
			
			// 剔除选中的数值
			int[] num2 = new int[i - 1];
			for (int j = 0; j < i; j++)
				if (j < index)
					num2[j] = num1[j];
				else if (j > index) num2[j - 1] = num1[j];
			num1 = num2;
		}
		
		return tmp;
	}


/** 数组排序函数 */
	public static int[] sort(int[] data)
	{
		int tmp;
		for (int i = 0; i < data.length - 1; i++)
		{
			for (int j = i + 1; j < data.length; j++)
				if (data[i] > data[j])
				{
					tmp = data[i];
					data[i] = data[j];
					data[j] = tmp;
				}
		}
		return data.clone();
	}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: