math.random,仅生成0?

以下代码仅产生0;-;


我究竟做错了什么?


public class RockPaperSci {


  public static void main(String[] args) {

    //Rock 1

    //Paper 2

    //Scissors 3

    int croll =1+(int)Math.random()*3-1;

    System.out.println(croll);

  }

}

编辑,另一张海报建议修复它。int croll = 1 +(int)(Math.random()* 4-1);


子衿沉夜
浏览 791回答 3
3回答

侃侃无极

您正在使用Math.random()哪个州返回一个double带有正号(大于或等于0.0并小于)的值1.0。您正在将结果转换为int,返回值的整数部分,即0。然后1 + 0 - 1 = 0。考虑使用 RandomRandom rand = new Random();System.out.println(rand.nextInt(3) + 1);

翻阅古今

public static double random()返回一个带正号的双精度值,大于或等于0.0且小于1.0。从该范围(近似)均匀分布伪随机地选择返回值。 int croll =1+(int)Math.random()*3-1;例如 int croll =1+0*-1; System.out.println(croll); // will print always 0 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java