题目:随机产生5个数,这5个数每个数的范围都在[10,35]之间,5个数的和是定值100,尽量让5个数的概率随机,写出算法??
如,原来a,b,c,d,e都是20,随机后变成a=34b=29c=11d=10e=16,但是他们之和还是100,再次随机后a=11b=21c=13d=28e=27,他们的和还是100。
我的解决思路是,第一个数和第二个数在[10,35]中随机,后面的数随机要满足一定的条件:保证它之后的数随机后能在[10,35]之间,极端不满足的情况是前两个数都随机到35,那么后面的三个数只能都是10了,所以第三个数随机的时候要满足(100-a-b-c)/2>10||(100-a-b-c)/2<35,否则就要重新随机。第四个数跟第三个数的处理方式一样,第五个数是个用100减去前四个数就行。以下是我的实现:
public static void random(){
Random r = new Random();
int b,c,d,e;
int a = r.nextInt(25)+10;
b = r.nextInt(25)+10;
c = r.nextInt(25)+10;
while((100-a-b-c)/2<10||(100-a-b-c)/2>35){
c = r.nextInt(25)+10;
}
d = r.nextInt(25)+10;
while((100-a-b-c-d)<10||(100-a-b-c-d)>35){
d = r.nextInt(25)+10;
}
e = 100-a-b-c-d;
System.out.println("a="+a+"b="+b+"c="+c+"d="+d+"e="+e);
}
这里又想起一个有关随机的题目:给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。
要保证rand7的等概率,就不能利用rand5() + rand()%3来实现rand7()函数,可以这样思考,首先构造一个1到n的等概率随机函数randn(),其中n>7,这样在randn函数内1-7之间的数肯定也是等概率的,把大于7的数丢弃就ok了。以下是我的代码:
//通过rand5随机1-7之间的数
public static int rand7(){
int t = rand5()+(rand5()-1)*5;
while(t>22){
t = rand5()+(rand5()-1)*5;
}
return t%7+1;//这里把7的整数倍也用求余的方式映射到1-7.
}
//随机1-5之间的数
public static int rand5(){
Random r = new Random();
int i = r.nextInt(5)+1;
return i;
}
这里又有一个更普遍的题目,通过randn()函数随机randm()函数,randn是等概率随机1-n之间的数,randm是等概率随机1-m之间的数。跟上面的思路一样,很容易写出代码:
//通过randn随机1-m之间的数。
public static int randm(int n,int m){
int t = n*n;
int i=1;
int max = (t/m)*m;
int s = randn(n)+(randn(n)-1)*n;
while(s>(max+1)){
s = randn(n)+(randn(n)-1)*n;
}
return s%m+1;
}
//随机1-n之间的数
public static int randn(int n){
Random r = new Random();
int i = r.nextInt(n)+1;
return i;
}
分享到:
相关推荐
### 004m金蝶软件测试笔试题知识点解析 #### 一、综合类知识点 **1. 职业倾向测试** - **知识点概述**:这类题目旨在评估应试者的个人兴趣、价值观以及性格特点等,从而判断其是否适合从事特定的职业。常见的职业...
【标题】"2019南京帆软软件公司校园招聘研发类笔试题"涉及的知识点主要涵盖逻辑推理、算法和代码编写三个方面。帆软软件公司作为一家专注于数据分析和商业智能的公司,其研发岗位的笔试题往往侧重于考察应聘者的基础...
一道简单的笔试题可能就是对这些基础知识的直接考察。 2. **面向对象**:Java是一种面向对象的语言,因此对类、对象、继承、封装和多态的理解至关重要。笔试题可能会设计一个简单的类结构,要求你实现特定功能或者...
《C++笔试题集锦》是一本专门为C++编程爱好...每一道题目的解答都能引导读者深入思考C++语言的特性和设计哲学,从而在编程实践中游刃有余。因此,无论是准备面试还是自我提升,这本书都是C++学习者不可或缺的参考资料。
【微软笔试题】通常用于测试应聘者的逻辑推理、问题解决和计算能力,这些能力在IT行业中至关重要。以下是对几个典型题目的分析: 1. **金条分段问题**:这是一道逻辑推理题,考察的是如何在有限的操作次数内公平...
标题与描述中的关键词“2012谷歌笔试题”揭示了这一内容的核心是关于谷歌在2012年招聘过程中使用的笔试题目集。这不仅是对谷歌公司当时招聘流程的一个历史回顾,也是对IT行业求职者准备面试的重要参考资料。下面,...
【标题】"微软2015招聘笔试题"揭示了微软公司在2015年度针对求职者进行的技术筛选过程,这种笔试通常包含了编程、算法、系统设计、逻辑推理等多种技术领域的题目,旨在评估应聘者的综合技能和问题解决能力。...
【笔试中的逻辑思考题解析】 在求职过程中,逻辑思考题是许多企业用来评估应聘者思维敏捷度和逻辑推理能力的重要工具。这些题目通常涉及到数学、逻辑推理、问题解决等多种元素,要求应聘者在有限时间内找到正确答案...
广东移动2012年的暑期实习生招聘笔试题分为三大部分,总时长为三个小时,每部分考察的能力和内容各不相同。 - **第一部分**:中文IQ题,共计25题,每题2分,总计50分。这部分旨在考察应聘者的逻辑思维、数学基础和...
例如,你可能需要解决一道关于条件语句、循环逻辑或算法设计的问题,这都需要清晰的逻辑思考。此外,在系统设计和项目管理中,良好的逻辑推理能力有助于构建合理的工作流程和解决复杂问题。 3. **填空题**: 填空...
从"文书考试题及答案笔试题.doc"中精选的题目,我们不仅能够体会到考试设计者对考查知识面广度和深度的追求,更能洞察到这些题目背后所蕴含的丰富知识要点。 言语理解与表达是语言学习的核心能力之一,此类题型要求...
这是一道腾讯公司笔试中的附加题,原题来源于ACM(国际大学生程序设计竞赛)的一个问题。题目要求求解一个矩阵中最长递减路径的长度。该题目不仅考察了候选人的编程能力,还考察了解决复杂算法问题的能力。 ### ...
交通银行是中国五大国有商业银行之一...总之,这份压缩包中的历年真题资源是备考交通银行笔试的宝贵材料,考生应当充分利用,结合其他教材和模拟题进行全面而深入的复习,以期在笔试中取得优异成绩,成功进入交通银行。
无领导小组讨论重在考察应聘者的团队合作能力和问题解决能力,求职者需要在讨论中展现出积极参与和理性思考的能力。半结构化面试则更侧重于了解应聘者的个人经历、职业规划以及对应聘岗位的理解,因此,求职者需要...
### 华为校招硬件岗,电源岗笔试题解析 #### 题目1:压敏电阻选型原则 **题目描述**:压敏电阻选型需满足:压敏电压 \(U_c >\) 最大持续工作电压 \(U_{max} >\) 额定工作电压 \(U_n\);绝不允许 \(U_c\) 低于被...
1. **逻辑推理**:试题中提到的字母序列O,T,T,F的问题,这是一道逻辑推理题,考察的是对模式识别和规律分析的能力,通常在软件开发面试中会出现类似的逻辑思维测试。 2. **数学问题**:16个数字填入16格方框的问题...
- 题目中的"IBM 社会招聘笔试题 1"涉及到排列问题,需要在不取出任何球的情况下改变黑白球的顺序。这类问题考察的是逻辑思维和空间想象能力,通过思考如何利用球的移动达到目标排列。 - "弯管子"问题则是一道有趣...
根据给定文件的信息,本文将围绕“微软笔试面试整理题”的相关内容进行展开,重点解析微软笔试面试中的几个关键方面:技术基础知识考查、智力题目、英语能力以及想法类题目,并给出一些建议。 ### 技术基础知识考查...
另一道题目谈到发展步伐与系统稳定及市场需求的关系,提示考生在考虑发展战略时,既要稳健前行,又不能过分保守,避免错失战略良机。正确选项为“B.固然保守”,意味着考生在答题时需要展现出对发展策略的辩证思考...