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

48 篇文章 0 订阅


	// 随机数
	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[n];
		int[] num1 = new int[n];
		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();
	}
	






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值