java猜拳游戏如何控制胜率?要求前五局胜率在百分之六十以上

猜拳游戏前五局要求胜利次数在三次到五次随机
int ren5 = 5-(int)(Math.random()*3);
int first = 0;
int second = 0;
switch(ren5){
case 3:
first=(int)(Math.random()*5) + 1;
do{
second=(int)(Math.random()*5)+1;
}while(first == second);
case 4:
first=(int)(Math.random()*5)+1;
}
System.out.println("1.石头\t2.剪刀\t3.布\t0.结束\t");
System.out.println("请出石头剪刀布:");

       for(int i=0;i<5;i++){
        int a=s.nextInt();
                    老师写的这段代码  我却不懂意思。希望大神能详细解答一下!能多白话就有多白。我是一个新进小白

让计算机作弊,先得到输入,然后生成一个0~1随机数,如果>0.6就得到对应输入会败的那个,否则得到对应输入会胜的那个

哪段代码是你老师写的?。。代码没太看懂,而且感觉漏洞百出,至少那段do-while循环是可能死循环的。。

  • 首先,你很容易可以控制电脑作弊,如果想赢,只需要对方出剪刀我出石头就行了。
  • 那么问题就变成了,我们需要控制电脑在哪些局获胜。
  • 我们分析一下需求,我们需要有均等的概率赢3/4/5局,那么我们的预期胜率就是80%(即60%、80%、100%的平均数)。那么第一局的时候,我们知道我们有80%的概率赢。所以用Math.random()来个0~1的随机浮点数,然后乘以5,再强转成整形,那么这个整形是等概率分布在0/1/2/3/4上面的,我们判断一下这个数,如果它大于0,就让电脑赢,如果等于0,就让电脑输。这样来控制这一局的80%胜率。
  • 第二局和第一局一样,按照80%来赢
  • 第三局的时候开始有点特殊了,因为有可能前两局全都输了的,这种情况下我们必须让电脑连赢三局,这一局让电脑直接赢;如果没这么倒霉,那还按照80%的概率来赢就好
  • 第四局一样,如果前三局输掉了两局,这一局直接赢,否则80%赢
  • 第五局也一样,如果前四局输掉了两局,这一局直接赢,否则80%赢

思路是这样的,说的尽量啰嗦一点,但是可以保证是随机且平均地赢下3/4/5局的。看明白了吗