随机产生 指定的个数和指定的总和的数字

/**
 * 随机生成总数相等的一个数组
 * @author xuxk
 * @time 2016年5月17日 上午10:31:03
 */
public class RandSumQuery {

	public static void main(String[] args) {

		int count = 10;
		int total=300;
		int min=total/count-1;
		System.out.println(min);

		int[] result = new int[count];
		result = getRandomAndTotalEq(count, total, min, result);
		System.out.println(result);
		int sum=0;
		for (int i = 0; i < result.length; i++) {
			System.out.println("--:"+i+":"+result[i]);
			sum+=result[i];
		}
		System.out.println("总和:"+(sum));

	}

	/**
	 * 获取一个随机的总和相等的数组
	 * @param count
	 * @param total
	 * @param min
	 * @return
	 */
	public static int[] getRandomAndTotalEq(int count,int total,int min,int[] result){

		int random = 0 ;
		if(count>1){
			int useTotal = total-(count-1)*min;
			random =(int)(Math.random()*(useTotal-1)+1);
		}else{
			random = total;
		}
		result[count-1] = random;
		int surplusTotal = total-random;
		count--;
		if(count>0){
			getRandomAndTotalEq(count,surplusTotal,min,result);
		}
		return result;
	}

}
时间: 2024-12-25 07:12:19

随机产生 指定的个数和指定的总和的数字的相关文章

随机生成50个密码到指定文件中

随机生成50个密码到指定文件中 [[email protected] ~]# cat round.sh #!/bin/bash count=1 while [ $count -le 50 ] do round=`cat /dev/urandom | head -n 10 | md5sum | head -c 8` echo $round >> /root/round.txt let count++ done 或者也可以这样来写 for((i=1;i<=50;i++)); do head

创建指定个数,指定最小值,最大值的随机数

/** * 创建指定个数,指定最小值,最大值的随机数 * @author ztd * @param count 随机数个数 * @param minVal 随机数最小值 * @param maxVal 随机数最大值 * @return */ public static List<Integer> createRandomList(int count, Integer minVal, Integer maxVal) { ArrayList<Integer> list = new Ar

linux下通过iptables只允许指定ip地址访问指定端口的设置方法

这篇文章主要介绍了linux下通过iptables只允许指定ip地址访问指定端口的设置方法,需要的朋友可以参考下. 首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清除预设表filter中使用者自定链中的规则 其次,设置只允许指定ip地址访问指定端口 其次,设置只允许指定ip地址访问指定端口 iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT iptab

iptables只允许指定ip地址访问指定端口

首先,清除所有预设置 iptables -F#清除预设表filter中的所有规则链的规则 iptables -X#清除预设表filter中使用者自定链中的规则 其次,设置只允许指定ip地址访问指定端口 iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --sport 22 -j ACCEPT iptables -A INPUT

字符串指定间隔长度插入指定字符串

最近碰到一个这样的需求,字符串指定间隔长度插入指定字符串,大概描述一下 有一字符串 “abcde12345fghig67890” ,我想指定间隔长度为5(这个是字符串长度能够被5整除),插入“/”字符串(字符串不限制长度). 最后返回结果“abcde/12345/fghig/67890” . 下面是我实现此功能代码,贴出来与大家讨论,我觉得写法太繁琐,看大家有没有更好实现方法. using System; using System.Collections.Generic; using Syste

复制指定目录下的指定文件,并修改后缀名 很重要,也很难!!!

package cn.idcast2; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FilenameFilter; im

linux 查找指定内容并显示指定行数的命令,显示匹配行和行号

grep -i "desktop-printing-0.19-20.2.el5.x86_64" -n -A 10 install.log linux 查找指定内容并显示指定行数的命令,显示匹配行和行号,布布扣,bubuko.com

JavaScript跳转到指定页面并且到指定的tab切换窗口

案例的解析就是点击A页面的第一个的切换窗口的按钮跳转到B页面,再点击B页面的按钮跳转到A页面的第二个窗口,这个实现的效果有三种方法,下面的图片案例: A页面的第一个切换窗口 B页面的跳转按钮 A页面的第二个切换窗口 第一方法用函数function: 演示效果:JavaScript跳转到指定页面并且到指定的tab切换窗口 A页面按钮 <a href="b.html?id=1980&order_type=p_order">aaaaa</a> B页面按钮代码:

获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数

#region 函数:GetSubString() 作用:获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数 /// <summary> /// 获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数 /// </summary> /// <param name="strSub">输入中英混合字符串</param> /// <param name="start"