一个老虎在一天中午吃饭,每个肉3斤左右,一天也就能吃30斤肉左右,但这有2个饲养员
饲养员A的情况是:1块肉有30%的概率会多加了3斤.
饲养员B的情况是:1块肉有25%的概率也会多加3了斤,有5%的概率呢会多给一块肉(而且这块肉呢还可能是多加了3斤的肉)
饲养员A的情况是:1块肉有30%的概率会多加了3斤.
饲养员B的情况是:1块肉有25%的概率也会多加3了斤,有5%的概率呢会多给一块肉(而且这块肉呢还可能是多加了3斤的肉)
解决方案 »
- java初学,求指教,代码编译出错
- 迷茫--没事的进来看下
- jdk安装完 java是默认可用的命令 但是path中却没存放路径 存哪了呢?
- 神啊,救救我吧,我只想用两个线程来完成这个任务,可是总是不好使
- 初学Hibernate的困惑(各位帮帮忙)
- 关于JAR打包
- Figure 3D 控件,欢迎试用
- 用jdbc连接Oracle是不是一定要先安装Oracle:
- 请问一下,udp可不可以怎样发送java对象,怎样发送呀,急!!!100分
- 如何在Session Bean里返回多条记录
- Java j2SE 5 Edition参考大全 Herbert Schildt 著.这本书对于初学者怎么样?望高手指点
- 初学java,向各位高手请教个问题
int sumA = 0;
for(int ix = 0; ix < 10; ++ix)
{
double r = Math.random();
if(r < 0.3)
{
sumA += 6;
}
else
{
sumA +=3;
}
}
System.out.println(sumA);
int sumB = 0;
boolean oneMore = false;
for(int ix = 0; ix < 10; ++ix)
{
double r = Math.random();
if(r < 0.05 && !oneMore)
{
oneMore = true;
--ix;
r = Math.random();
}
if(r < 0.25)
{
sumB += 6;
}
else
{
sumB += 3;
}
}
System.out.println(sumB);
第1:当B饲养员有5%的概率多给1块肉的时候,这个在程序里只能进入一次
if(r < 0.05 && !oneMore) 因为需要oneMore来进入循环,而oneMore被赋予true的时候 就再也进入不了判断了,100块肉可能有5块左右有这样的概率,而这个程序只能算一次。
第2:首先,--ix;这个程序我看了也很受启发是个很好的技巧,^_^,好好学了下,但我看这种情况你可能没有想过,你让程序多循环了下,但对于这个例子会出现隐藏问题,假设你多出那次又刚好在0。05循环内会出现什么情况,也就是说0。05概率多出了>=2块肉,这跟题目是不符合,多给一块肉后是不会再这块肉的情况多给肉的,因为0。05概率比较低,所以不会出现这种情况,但这个概率越大出现的问题也就越大。
呵呵 我也不知道我说的对不对 望回复下哈
对于饲养员B,我觉得其实你这个题目也没有讲的十分清楚。我是在认为B绝对不会出现一次多给两块肉的情况而留下oneMore这个变量的。这个变量的作用就是为了防止这种情况,即如果已经多给了一块肉,那么oneMore为true,以后不管循环多少次,都不会再多给肉(也就是不会再进--ix这段代码了),即使出现了小于0.05的概率。
如果抛开我之前的那个假设,把oneMore相关的代码删除即可。而且我认为这样更加合理,只是我认为这不是你的原意,所以才冒昧假设。
int sumB = 0;
for (int i = 0; i < 10; i++) {
double r = Math.random();
double oneMore = Math.random();
if (r < 0.25) {
if (oneMore < 0.05)
sumB = sumB + 12;
else
sumB = sumB + 6;
} else {
if (oneMore < 0.05)
sumB = sumB + 6;
else
sumB = sumB + 3;
}
}
System.out.println("sumB="+sumB);