闲来无事,做一个简单随机查找数字小程序,闲的发慌,因为具体user没有给出下一阶段的工作信息。
1 - 10000 随机自然数字(无重复10000个数字), 随机删除其中一个数字, 怎么快速找出你刚才删除的那个数字?
package com.suanfa;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author zhaoxiaobo
* @createdTime:Aug 16, 2012
* description :
* 1 - 10000 随机自然数字(无重复10000个数字), 随机删除其中一个数字, 怎么快速找出你刚才删除的那个数字?
* method1: 找出按照排序的规律,两者之间偏差在大于1以上的就是,即位于他们之间的就是。
* method2: 既然是数字,我们顺利就要考虑数字的特殊性,比如数字计算内在规则,数字之间的等差关系,存在和差既定性。
*/
public class SearchRandomDigit {
private static final int TOTAL_NUMBER = 10000; // total number 1 - 10000
private static final List<Integer> randomList = new ArrayList<Integer>();
public static void main(String[] args) {
//generate random 1-10000 digits
generateRandomDigit();
//generate one random (1 <= digit <= 10000)
Integer random = getRandomDigit();
//System.out.println("count 1=== " + randomList.size());
Integer result = 0;
System.out.println("Random digit === " + random);
if (removeRandomDigit(random)) {
result = findRandomDigitMethod1();
result = findRandomDigitMethod2();
}
System.out.println("Find result === " + result);
}
private static void generateRandomDigit() {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < TOTAL_NUMBER; i++) {
list.add(i + 1);
}
Collections.shuffle(list);
for (Integer integer : list) {
//System.out.println(integer);
randomList.add(integer);
}
}
private static int findRandomDigitMethod1() {
int len = randomList.size();
int result = 0;
Collections.sort(randomList);
for (int i = 0; i < len - 1; i++) {
if (randomList.get(i + 1) - randomList.get(i) == 2) {
result = (randomList.get(i + 1) + randomList.get(i)) / 2;
break;
}
}
return result;
}
private static int findRandomDigitMethod2() {
//all data summation
int sum = 0;
//all data summation which removed one data
int sum_ = 0;
for (int i = 1; i <= TOTAL_NUMBER; i++) {
sum += i;
}
for (Integer atom : randomList) {
sum_ += atom;
}
return sum - sum_;
}
private static boolean removeRandomDigit(Integer random) {
return randomList.remove(random);
}
private static Integer getRandomDigit() {
return (int)(Math.random() * TOTAL_NUMBER) + 1;
}
}
分享到:
相关推荐
"羽翼课堂(学号)抽查器2.1中文绿色免费版"是一个专门设计用于教育环境的系统工具,它的主要功能是在1到9999的数字范围内随机抽取学号,便于教师进行课堂互动或者点名。这款软件的中文界面使得用户操作更为便捷,而...
对于IT专业人士来说,理解和处理这类数据,可以利用数据分析工具(如Excel的内置功能或Python、R等编程语言)进行统计分析,找出潜在的风险点,为桥梁维护提供科学依据。同时,通过数字化和自动化手段,可以提高检测...
7. **导出查看**:除了个人查看外,管理层也能导出所有业务员的拜访记录,进行深度分析,找出销售过程中的问题和改进点,为制定更有效的销售策略提供数据支持。 此流程通过技术手段实现了拜访管理的标准化和数字化...
9. **条形图分析**:条形图可以清晰地看出各部分的数值大小,例如在职位竞争人数的条形图中,通过比较高度可以找出竞争最激烈的部门。 10. **频数计算**:在给定的数字串中,计算某个数字出现的频数,可以帮助我们...
查检表与层别法结合使用,可以更有效地进行数据分析,找出问题的根源,从而制定改进措施。层别法是将数据按照一定的标准(如时间、地点、人员、产品类型等)进行分类,以便于发现规律和问题。通过层别,我们可以更...
在试题中的第1题,对于酸奶的抽查,由于数量较少,通常采用**简单随机抽样**;对于报告厅的听众抽样,由于座位分布均匀,可采用**系统抽样**;对于教职工的抽样,因为不同类别的人数差异较大,更适合采用**分层抽样*...
4. 工作抽查法进行工作改善:定期评估工作性能,找出差距,实施持续改进。 【标准化与制度化】 标准化和制度化是企业管理的基础,通过建立明确的操作规范和流程,确保工作的稳定性和一致性,减少错误和延误,提高...
10. **数字和问题**:“吉祥数”的定义是三位数的各位数字之和等于6,可以通过枚举或数学分析找到所有符合条件的数。 11. **相邻捆绑问题**:4个小组的3人坐在一起,可以看作是4个大元素的排列问题,每个小组内部...
6. **统计图形解读**:通过条形图可以比较各部门的竞争人数,找出人数最多的部门;在数字序列中计数特定数值(如“1”的频数)来了解其出现的频繁程度。 7. **抽样方法**:当要求每个个体都有相等机会被抽到时,这...
2. 位值表示法与整数表达:中间一行的数字可以表示为100d+10b+e,中间一列的数字可以表示为100a+10b+c,通过位值原理,我们可以推断m和n的关系,进而求出m+n的值。 3. 不等式的基本性质:题目中给出的不等式需要...
2. 检索方式:常见的检索方式有顺查法(按时间顺序查找)、倒查法(从最新文献开始查找)、引文追溯法(通过参考文献查找相关文献)和抽查法(随机选择时间点进行查找)。 3. 数据库与检索工具:例如《中国图书馆...
3. 常规法:这是最基本的检索方式,包括顺查法(按照时间顺序查找)、逆查法(从最近的信息开始追溯)和抽查法(随机选择时间点进行检索)。常规法依赖于各种形式的检索工具,如印刷版、缩微版、光盘版和网络版。 4...
首先计算所有可能的点数组合,然后找出满足条件的组合。对于任意两个骰子,总共有\(6 \times 6 = 36\)种组合。点数差为0的组合有(1,1),(2,2),...,(6,6),共6种。点数差为1或-1的组合有10种。所以,满足条件...
抽查法是在大量文献中随机选取;综合法结合多种方法。 9. 中国图书馆图书分类法:采用拼音字母和数字相结合的体系,用于对图书进行分类。 10. 检索工具:题录、索引、文摘和目录分别用于报道文献信息、提供索引、...
**数据分析**: 分析实验得到的数据,找出事件发生的规律。例如,在种子发芽实验中,通过记录每批种子的发芽数量和总数量,可以计算出发芽的频率,并据此估计这批种子的发芽率。 ### 4. 应用案例 **案例一**:假设...
- **题目描述**:某班共有40名学生,其中只有一对双胞胎,若从中随机抽查三位学生的作业,则这对双胞胎的作业同时被抽中的概率是多少? - **解析**:从40名学生中选取3名的方法数为 \(\binom{40}{3}\)。其中包含双...
题目中提到市政府在抽查意见时,为了更具代表性,应该选择分层抽样,因为这样能确保各个领域(农业、工业、教育)的代表都被充分考虑。 5. **函数的零点问题**:函数零点是使函数值为0的自变量的值。题目中涉及的是...