编写JAVA程序,生成100个1到6之间的随机数,统计1到6每个数出现的概率

编写JAVA程序,生成100个1到6之间的随机数,统计1到6每个数出现的概率,第1张

package 测试包;

public class 随机数16 {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

int aa[]=new int[100];

int bb[]=new int[6];

for(int i=0;i<100;i++){

aa[i]=(int)(Mathrandom()6+1);

if(i<6){

bb[i]=0;

}//if

}

for(int j=0;j<6;j++){

for(int k=0;k<100;k++){

if (j+1==aa[k]){bb[j]=bb[j]+1;}

}//for k

}//for j

for(int L=0;L<6;L++){

Systemoutprintln((L+1)+"出现的几率是:"+bb[L]+"%");

}

}

}

您好,任意一个骰子得4的概率是1/6,不得4的概率是5/6所以,这是个“二项分布”问题

C(20,5) x (1/6)^5 x [1-(1/6)]^(20-5)

= 15504 x (1/6)^5 x (5/6)^15

= 01294

每次掷骰子都是一次独立事件,彼此互不影响,投掷10次是另一个独立事件,投掷10次出现五次落在1-50之间另外五次落在51-100之间的概率最大,而你不能用已得结果推测下面的结果,因为它们彼此互不影响。就好比抽签问题,如果后面抽签的人不知道前面人抽的结果那么是公平的,每个人都是1/n,如果知道结果,那后面概率就变了。

你的要求实际就是等于,100数里面取数,要实现某些数先取到的概率大对吧,提供算法,是自己想的,不一定好

就是取到过后不再取的话很简单就是开个100的数组,取过的数就从里面删掉

提高某些数的概率的话我是这样想的

就是确认该数是不是被取到,就设置取2次概率

每一个数设置对应一个取到的概率值,从1到100之间,然后通过第一取到一个数再对应分析它的概率值来确认取没取

比如135这个数,首先在100数中它被取到的概率是相等的,然后第一比如取到了它就进入进一步分析他的概率值,比如设置135这个数的概率值为60,然后就再在1到100里取个随机值,然后和60比较,比60小的话就确认135被取到,如果比60大的话就确认135没被取到,再回到原来进行取数。

这样的话135的实际被取到的概率就提高了,而且可以通过设置概率值来设置被取数取到的概率,比如如果没有特殊要求的数概率值都设置为50,那它被取到的概率就是一半一半,然后调高概率值就是增加被取到的概率,降低概率值就是减少被取到的概率

R一个很方便的用处是提供了一套完整的统计表集合。函数可以对累积分布函数P(X≤x),概率密度函数,分位函数(对给定的q,求满足P(X≤x) > q的最小x)求值,并根据分布进行模拟

在统计学中,产生随机数据是很有用的,R可以产生多种不同分布下的随机数序列。这些分布函数的形式为rfunc(n,p1,p2,),其中func指概率分布函数,n为生成数据的个数,p1, p2, 是分布的参数数值。上面的表给出了每个分布的详情和可能的缺省值(如果没有给出缺省值,则意味着用户必须指定参数)。

例:用0~1之间的均匀分布产生10个随机点

> runif(10)

[1] 0961465376 00075219250193619234 0137027246 0739370654 0072907082

[7] 0674551635 06507778110984664183 0796723066

大多数这种统计函数都有相似的形式,只需用d、p或者q去替代r,比如密度函数(dfunc(x, )),累计概率密度函数(也即分布函数)(pfunc(x,))和分位数函数(qfunc(p, ),0<p<1)。最后两个函数序列可以用来求统计假设检验中P值或临界值。例如,显著性水平为5%的正态分布的双侧临界值是:

> qnorm(0025)

[1] -1959964

> qnorm(0975)

————————————————

1用内置方法Mathrandom()产生一个随机数介于0~1。

2强制转化为int类型,根据int类型的特点,这个数是0~5之间的整数。

3得到的数加1,这样这个数就是介于1~6的整数,并且是随机的。

4将介于1~6之间的这个整数赋值给randomNum

5(重点)probability是个数组,这个程序的算法就是:利用probability这个数组记录随机数出现的次数,probability[0]记录随机数1出现的次数,就是当出现的随机数为1时,数组的probability[randomNum-1]项加1(randomNum-1是为了表现算法,实际的程序中是不需要先加1再减1的)。同理:其它的随意数也做这样的处理。这样,probability这个数组中[0]项保存的是1的出现次数,[1]项保存的是2出现的次数…………

6输出随机数的值(后面加个空格“\t”)

7循环到步骤第1个步骤

是要求概率吗,直接用概率公式就行了,需要循环吗?

还是要做程序循环生成6个数字,然后统计概率:

Public Sub 妈妈说中文作为变量名和函数名也是可以的_统计()

Dim 成功的生成了六个一样的数字的次数 As Integer

For 次数 as integer = 1 to 10000 '统计10000次

if 生成六个数字并返回是否一样 = True Then 成功的生成了六个一样的数字的次数+=1

Next

End Sub

Function 生成六个数字并返回是否一样() As Boolean

Dim k(6) as integer

For i as integer = 1 to 6

k(i) = Int(Rnd6)+1

if i >1 And k(i) <> k(i-1) Then Return False

Next

Return True

End Function

以上就是关于编写JAVA程序,生成100个1到6之间的随机数,统计1到6每个数出现的概率全部的内容,包括:编写JAVA程序,生成100个1到6之间的随机数,统计1到6每个数出现的概率、掷骰子求概率,怎么编程序、在100个数字里面,随机选出几个数,要其中的某些数出现的概率大的程序怎么写,且出现后就不会再出现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10133954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存