⑴ j2ee网上考试系统如何实现从sql数据库题库中随机抽题算法
用产生随机数[Random]的方式来抽题。假设题库中有1000道题,每次抽100道。
首先利用random不停地循环 产生1~1000之间的整数,并将该数据放到集合[Set]中,因集合元素唯一,所以相同的数字仅取一次,当集合的大小为100时,跳出循环。然后以集合中的这些数字作为题号向数据库中查询取题。
--------------------------------------------------
/**
* 产生 1~1000 之间的随机整数
*
* @return 随机数
*/
public Integer numFactory() {
return new Random().nextInt(1000) + 1;
}
/**
* 随机产生 100 个题号[放入集合、互异性]
*
* @return 集合
*/
public Set<Integer> initNO() {
Set<Integer> set = new HashSet<Integer>();
while (true) {
set.add(numFactory());
// 当集合元素个数为100时跳出循环
if (set.size() > 100) {
break;
}
}
return set;
}
/**
* 将集合转换为数组
*
* @param set
* 需要转换的集合
* @return 目标数组
*/
public Integer[] convert(Set<Integer> set) {
Object obj[] = set.toArray();
int len = obj.length;
Integer integer[] = new Integer[len];
for (int i = 0; i < obj.length; i++) {
integer[i] = (Integer) obj[i];
}
return integer;
}
⑵ 求一个特定区域内产生随机数不重复的算法。
解答如下:
像这种题目就是求全排列的类型。
现在你题目中有y个数字,
第一次抽取时,共有y个数字可供选择,因此有y种可能性。
第二次抽取时,因不能重复,所以共有y-1个数字可供选择,因此有y-1种可能性。
第三次抽取时,也因不能重复,所以只有y-2个数字可供选择,因此有y-2种可能性。
根据上面可以类推出第四次,第五次……第y次
因此具体的答案就为:y*(y-1)*(y-2)*(y-3)……*{y-(y-1)} = y!
⑶ 数学简单概率题,求具体步骤算法。谢谢!问有5个字母分别为a,b,c,d,e,随机抽取两个字母,抽到
随机抽取两个字母 一共10种情况。C52 5写下面2写上面
然后固定一个A。再抽一个字母只有四种情况 那么概率是 4/10 2/5
⑷ 求 把 1800随机分成900份 的算法
第一节 随机抽样 基础梳理 1. 简单随机抽样 (1)定义:设一个总体含有N个个体,从中 抽取n个个体作为样本(n≤N),如果每次抽取时总体内的各个个体被抽到 的机会都 ,就把这种抽样方法叫做简单随机抽样. (2)最常用的简单随机抽样的方法: 和 . N n N n 2. 系统抽样的步骤假设要从容量为N的总体中抽取容量为n的样本. (1)先将总体的N个个体 ; (2)确定 ,对编号进行 ,当是整数时,取k= (3)在第1段用 确定第1个个体编号l(l≤k); (4)按照一定的规则抽取样本,通常是将l加上间隔k得到第2个个体编号 ,再加k得到第3个个体编号 ,依次进行下去,直到获取整个样本. 3. 分层抽样 (1)定义:在抽样时,将总体 的层,然后按照 ,从各层独立地抽取一定数量的个体,将各层取出的个体合在一起作为样本,这种抽样方法叫做分层抽样. (2)分层抽样的应用范围:当总体是由 组成时,往往选用分层抽样. 4. 三种抽样方法比较类别 共同点 各自特点 相互联系 适用范围简单随机 抽样抽样过程中每个个体被抽到 的机会均等从总体中抽取总体中的 个体数较少系统抽样 将总体 分成几部分,按一定的规则分别在各部分中抽取在起始部分抽样时采用抽样总体中的 个体数较多分层抽样 将总体分成 几层,分层进行抽取各层抽样时采用抽样或抽样总体由差异明显的几部分组成 答案: 1. (1)逐个不放回地 相等 (2)抽签法 随机数法 2. (1)编号 (2)分段间隔k 分段 (3)简单随机抽样 (4)(l+k) (l+2k) 3. (1)分成互不交叉 一定的比例 (2)差异明显的几个部分 4. 逐个 均匀 简单随机 简单随机 系统 基础达标 1. (教材改编题)在抽样过程中,每次抽取的个体不再放回总体的为不放回抽样,则分层抽样、简单随机抽样、系统抽样中,为不放回抽样的有( ) A.1个 B. 2个 C. 3个 D. 0个解析:三种抽样都是不放回抽样.答案:C 2. (教材改编题)为了解1 200名学生对学校某项教学实验的 意见,打算从中抽取一个容量为30的样本,考虑采用系统抽样,则分段的间隔k为( ) A.40 B. 30 C. 20 D. 12 解析:总体容量N=1 200,样本容量n=30,所以分段间隔k=40. 答案:A 3. (原创题)某养猪场养有四大名猪:大白猪、长白猪、杜洛克猪、汉普夏猪,其中大白猪有200头,长白猪250头,杜洛克猪180头、汉普夏猪230头,估计产量时,应采用的抽样方法是( ) A. 分层抽样 B. 随机抽样 C. 系统抽样 D. 以上三种方法都可以解析:由于品种之间差异较大,故采用分层抽样.答案:A 4. (2010·四川)一个单位有职工800人,其中具有高级职称 的160人,具有中级职称的320人,具有初级职称的200人,其余人员120人.为了解职工收入情况,决定采用分层抽样的方法,从中抽取容量为40的样本.则从上述各层中依次抽取的 人数分别是( ) A. 12,24,15,9 B. 9,12,12,7 C. 8,15,12,5 D. 8,16,10,6 5. (2009·广东)某单位200名职工的年龄分布情况如图,现要从中抽取40名职工作样本.用系统抽样法,将全体职工随机按 1~200编号,并按编号顺序平均分为40组(1~5号,6~10 号,…,196~200号).若第5组抽出的号码为22,则第8组抽出 的号码应是 .若用分层抽样方法,则40岁以下年龄段应抽取 人.解析:因为抽样比 = ,. 故各层中依次抽取的人数分别是 =8, =16, =10, 答案:D =6,故选D. 40 800 1 20 160 20 320 20 200 20 120 20 解析:由系统抽样知第1组抽出的号码为 2,则第8组抽出的号码为2+5*7=37;当用分层抽样抽取时,40岁以下年龄段应抽取 1 2 *40=20(人).答案:37 20 经典例题题型一 简单随机抽样【例1】 上海世博会组委会决定从来自上海的1 800名志愿者中,选取6人组成志愿小组去中国馆服务,请用抽签法或随机数法设计抽样方案.解析:第一步,先将1 800名志愿者编号,可以编为 0001,0002,0003,…,1800;第二步,在随机数表中任选一个数,例如选出第2行第5列的 数2;第三步,从选定的数开始向右读,依次可得0 736,0 751, 0 732,1 355,1 410,1 256为样本的6个号码,这样我们就得到一个容量为6的样本. 题型二 系统抽样【例2】 从某厂生产的905辆家用轿车中随机抽取90辆测试某项性能,请合理选择抽样方法进行抽样,并写出抽样过程.解析:可用系统抽样法进行抽样,抽样步骤如下:第一步,将905辆轿车用随机方式编号;第二步,从总体中剔除5辆(剔除法可用随机数法),将剩下的 900辆轿车重新编号(分别为001,002,…,900),并分成90段;第三步,在第一段001,002,…,010这十个编号中用简单随机 抽样法抽出一个作为起始号码(如006);第四步,把起始号码依次加间隔10,可获得样本.变式2-1 下面给出某村委调查本村各户收入情况所作的抽样,阅读并回答问题:本村人口:1 200人,户数300,每户平均人口数4人;应抽户数:20户;抽样间隔: =60; 1200 20 确定随机数字:取一张人民币,编码的后两位数为12;确定第一样本户:编码的后两位数为12的户为第一样本户;确定第二样本户:12+60=72,72号为第二样本户; … (1)该村委采用了何种抽样方法? (2)抽样过程中存在哪些问题,并修改. (3)何处是用简单随机抽样?解析:(1)系统抽样. (2)本题是对某村各户进行抽样,而不是对某村人口进行抽样,抽样间隔为 =15, 300 20 其他步骤相应改为确定随机数字:取一张人民币,编码的后两位数为12,确定第一样本户:编号为12的户为第一样本户;确定第二样本户:12+15=27,27号为第二样本户. (3)确定随机数字用的是简单随机抽样,即“取一张人民币,编码的后两位数是12”用的为简单随机抽样. 题型三 分层抽样【例3】 一中学有高一学生400人,高二学生302人,高三学生250人,现用分层抽样法从全校所有学生中抽取一个容量为 190人的样本,应剔除多少人?每个年级分别抽取多少人?解析:总体人数为400+302+250=952人,样本容量为190,若按190∶952取样,无法取得整数解,故考虑从高二学生中剔除 2人,抽取比例为190∶950=1∶5,则高一学生应抽400 =80 人,高三学生抽取250 =50人. 先从高二学生中剔除2人,高二学生抽取300 =60人,组成容量为190的样本. 因此应从高二学生中剔除2人,高一学生抽取80人,高二学生抽取60人,高三学生抽取50人. 1 5 1 5 1 5 某学院的A,B,C三个专业共有1 200名学生,为了调查这些学生勤工俭学的情况,拟采用分层抽样的方法抽取一个容量为 120的样本.已知该学院的A专业有380名学生,B专业有420名学生,则在该学院的C专业应抽取 名学生.变式3-1 解析:C专业的学生有1 200-380-420=400名,由分层抽样原理,应抽取120* 400 1200 =40名.答案:40 链接高考 (2010·重庆)某单位有职工750人,其中青年职工350人,中年职工250人,老年职工150人,为了了解该单位职工的健康情况,用分层抽样的方法从中抽取样本. 若样本中的青年职工为7人,则样本容量为( ) A. 7 B. 15 C. 25 D. 35 知识准备:知道分层抽样中各层的抽样比相同,并会求抽样比.答案:B 解析:青年职工、中年职工、老年职工三层之比为7∶5∶3,所以样本容量为 =15.故选B. 7 7 15
⑸ 算法问题:设有N个球,其中有随机数量的红球和白球,从中随机抽取两个球
return返回的值为袋中红球的数目为m、白球数目为n、需要取出x个球、红球至少出现y次时的概率 此函数为递归函数 每进行一次函数调用代表从袋中取出一个球 可能是红球也可能是白球 (double)m/(m+n)*p1为取红球的概率 (double)n/(m+n)*p2为取白球的概率 如果你不太会递归 建议先把递归弄懂 然后再看这道题
⑹ 求从n个数中抽取随机数的c语言算法。
int a[9][8];定义数组包含math.h time.h头文件 运用rand()函数和系统时间用系统的时间做随机种子。对产生的随机数%100就能保证随机数都<100.最后加1,EQlxCg
⑺ 谁有随机过抽样和随机欠抽样算法吗
那么对有N个个体的总体,所抽取的样本容量到底该有多大?根据统计学的研究,这与要求的误差把握(概率)有关.
以一个实际问题来说明,设上文所提到的某地区15岁学生共有N人,设这N人中近视眼比例为a,a未知,待估计.而我们抽出的样本容量为n,样本中近视眼的比例为p,把p作为a的估计值,两者之间是有误差的.
在统计学中有专门的根据误差要求计算样本容量的公式,举几例如下:
(1)如果希望有95%的把握,使得误差|p-a|<0.15,那么只要取样本容量为
(2)如果希望有95%的把握,使得误差|p-a|<0.1,那么可以取样本容量为
(3)同样地,如果希望有95%的把握,使得误差|p-a|<0.05,那么要取
综上可知:
(1)随着误差|p-a|的减小,样本容量n必须增加.这说明,要提高估计的精确性,必须增加样本容量.在N=50并要求有95%的把握时,两者的关系如下表所示.
|p-q|<0.15
|p-a|<0.1
|p-a|<0.05
n
24
34
45
(2)随着总体中个体个数的增加,样本容量n也随之增加,但n的增加比N的增加要慢得多,无正比例关系.例如在要求误差|p-a|<0.05时,两者的关系如下表所示.
N
50
100
200
500
1000
2000
3000
4000
5000
n
45
80
132
218
278
323
341
351
357
它告诉我们,在保证估计达到一定的精确性的前提下,在总体中个体个数很多时,并不需要很大的样本容量.这是抽样调查之所以行之有效的原因之一.
⑻ 求一个随机数生成算法,时间复杂度低。当随机选了一个数,之后在其余数中随机抽,每次也是这样,即是不可
用一个list存放所有你需要的数,然后每次抽取随机一个大小在list长度的值,然后list取出该index的值,然后删除,依次循环。这个简单也不会造成取相同值的问题。
⑼ 一个C#的算法问题:从100个数里随机抽取99个数 然后求出哪个数没有被抽取
Random rnd = new Random();
int rndNum = rnd.Next(1,100); //得1~100的随机数索引
double[100] srcNumber;
//对srcNumber赋值(略)
Console.Write("数字{0}没有被抽取",srcNumber[rndNum]);
提示:我们用反抽法进行,先示一个随机的1-100之间的整数,作为未被抽取数的索引号,其余剩下的99个数可以认为是随机数了。