`

将一个正整数L随机拆分成n个正整数

 
阅读更多

 

/** 
     * 随机指定范围内N个不重复的数 
     * 最简单最基本的方法 
     * @param min 指定范围最小值 
     * @param max 指定范围最大值 
     * @param n 随机数个数 
     */  
    public static int[] randomCommon(int min, int max, int n){  
        if (n > (max - min + 1) || max < min) {  
               return null;  
           }  
        int[] result = new int[n];  
        int count = 0;  
        while(count < n) {  
            int num = (int) (Math.random() * (max - min)) + min;  
            boolean flag = true;  
            for (int j = 0; j < n; j++) {  
                if(num == result[j]){  
                    flag = false;  
                    break;  
                }  
            }  
            if(flag){  
                result[count] = num;  
                count++;  
            }  
        }  
        return result;  
    }
    
    /** 
     * 将一个正整数L随机拆分成n个正整数
     * @param L 正整数 
     * @param n 个数
     */ 
    public static int[] random(int L, int n){
    	int[] result = new int[n];
    	Random rand = new Random();
    	int sum = 0; // 已生成的随机数总和
    	for(int i=0; i<n-1; i++){
    		int temp = L - sum;
    		int random = rand.nextInt(temp);
    		result[i] = random;
    		sum += random;
    	}
    	result[n-1] = L - sum;
        return result;
    }

 

分享到:
评论

相关推荐

    python 随机红包金额拆分

    微信红包是十分受大家欢迎的功能,其核心任务是要将给定的金额随机拆分成给定个数的红包。也就是说,将给定的待发红包金额和个数按随机的方式确定每个红包的金额。编程实现该功能。入 第一行有一个正整数,表示测试...

    python 动态规划实现整数拆分

    把5拆分成若干无序正整数的和(若干可以包含1),请问有多少种拆分方法? 直接用枚举法实现: 5 = 5 5 = 4+1 5 = 3+2 5 = 3+1+1 5 = 2+2+1 5 = 2+1+1+1 5 = 1+1+1+1+1 很显然,结果为7。注意这里5 = 4+1和5=1+4是...

    上海电机学院C语言实训答案

    输入一个正整数n (1&lt;n),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。 (25)抓住肇事者 一辆卡车违反交通规则,撞人后逃跑。现场共有三个目击者,但都没有记住车号...

    各种排序算法的c++泛型实现

    它选取一个“基准”元素,将数组分为比基准小和大的两部分,然后对这两部分分别进行快速排序,直到整个数组有序。 - **归并排序(Merge Sort)**:归并排序也是一种分治算法,它将数组拆分为两个子数组,分别进行...

    RSA使用C语言算法的实现

    然后随机选择一个整数e,满足1 φ(n)且gcd(e, φ(n)) = 1,其中gcd表示最大公约数。公钥为(e, n),私钥d通过求解e * d ≡ 1 mod φ(n)得到。 5. 加密过程:RSA加密使用公钥(e, n),将明文m通过模幂运算c=m^e mod n...

    C常用算法:有常用的选择法冒泡法合并法顺序查找等

    素数是指除了1和它自身外没有其他正因数的正整数。判断一个数是否为素数的常见方法是从2开始到该数的平方根遍历,如果能被整除则不是素数。这里通过for循环和if条件判断实现,如果遍历完都没有找到能整除的数,那么...

    达内 coreJava 习题答案

    12、输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和 //计算斐波那契数列(Fibonacci)的第n个值 public class Fibonacci{ public static void main...

    2010年贵州省恩施自治州初生学业考试(数学).doc

    5. **正比例函数与反比例函数的交点**:在同一个坐标系中,如果一个正比例函数y=kx(k≠0)与一个反比例函数y=1/kx(k≠0)有公共点,那么k的值使得两个方程相等,即kx=1/kx,解得x²=1,表明当x=±1时,这两个函数...

    CCF非专业级别软件能力第一轮 CSP-J模拟题附答案

    - **知识点概述**:整数拆分问题是组合数学中的一个重要概念,指的是将一个正整数分解为若干个较小正整数之和的方法数量。题目中给出的问题是将8个球放在5个袋子中的不同分法,通过分类讨论的方法得到总共18种不同的...

    邝斌的ACM模板1

    11. **整数拆分**:将一个数拆分为若干个正整数的和,研究其可能的拆分方式。 12. **求A^B的约数之和对MOD取模**:涉及幂运算和约数性质,常用于组合计数问题。 13. **莫比乌斯反演**:一种强大的工具,用于简化计算...

    cutpolygon:Cut alias slice alias 用一条线分割一个二维曲面多边形,并去除指定部分。-matlab开发

    使用 CUTPOLYGON 切割别名相交别名分割别名切片一个多边形 P (作为一系列连接的 X、Y 坐标)与一条线 L(定义为两点),删除指定的边 s。 L 可以作为下限('B')、上限 ('T')、左限 ('L') 或右限 ('R')。 句法: Pc ...

    大数计算(运算)器(支持大素数判定和大数阶乘)

    在实现中,通常会使用分治策略,将大数拆分成小块进行运算,然后合并结果。 **快速幂运算模减**是一种高效的算法,用于计算\(a^b \mod c\)。传统的幂运算时间复杂度为O(b),而快速幂通过递归和位运算将时间复杂度...

    Vidual Basic的字符处理

    5. **随机生成和统计数字**:另一个`Command1_Click`事件处理程序用于生成一个四位随机整数,并统计其中不同数字的数量。`Randomize`函数初始化随机数生成器,`Int(9000 * Rnd + 1000)`生成1000到9999之间的随机数。...

    C++函数大全

    - `frexp()`:将浮点数拆分为一个指数和一个介于1和2之间的乘数,指数存储在另一个变量中。 - `ceil()`:返回大于或等于给定双精度数的最小整数。 - `floor()`:返回小于或等于给定双精度数的最大整数。 4. 字符...

    方正集团2011年软件工程师笔试试题

    3. **拆分链表**:将新旧链表分离成两个独立的链表。 #### 6. 关于指针和变量的解析 给定的示例涉及到了指针的一些基础概念: - `inta=(1,2,3,4,5);` 这行代码实际上是定义了一个整型变量`a`并将其赋值为5,因为...

    (完整word版)MATLAB的ARMA时间序列代码.doc

    ARIMA模型,全称为自回归整合移动平均模型(Autoregressive Integrated Moving Average Model),是时间序列分析中的一个重要工具,常用于预测和建模具有趋势、季节性和随机波动的数据。MATLAB是一个强大的数值计算...

    并行Mersenne Twister算法

    - \( m \), \( n \) 是固定的正整数。 - \( x_k \) 是宽度为 \( w \) 的比特向量序列。 - \( x^{\text{upper}}_k \), \( x^{\text{lower}}_{k+1} \) 分别表示 \( x_k \) 最高位的 \( r \) 位和 \( x_{k+1} \) 最低位...

    2演练-数资2(2019年)胡一萌(讲义笔记)(2021文职招考系统班:1期).pdf

    - 拆分数问题:涉及正整数的拆分,特别是偶拆分的计数问题。这需要对整数的不同拆分方法进行枚举和分类。 - 竞赛安排问题:如世界杯足球赛小组赛阶段的比赛场次计算,涉及组合问题的计算方法。 - 循环问题:涉及...

Global site tag (gtag.js) - Google Analytics