java - 当需要随机数时如何设置限制(1 或 2)?

标签 java random

我正在尝试创建一种方法,让用户预测模拟的抛硬币是正面还是反面。我无法将随机数分配给 1 或 2(对于头尾)。我相信我的尝试(下面的代码)给了我 0、1 和 2。

public static void coinToss(String call){
        //setting up random
        Random random = new Random();

        //set user guess to numeric value
        int guessNo=0;


        if (call.equalsIgnoreCase("heads")){
            guessNo=1;
        }else if (call.equalsIgnoreCase("tails")){
            guessNo=2;
        }else System.out.println("Invalid. Enter either heads or tails");

        //setting result for coin toss 
        **int result = random.nextInt(2);**
        System.out.println("Trace: numberic result is:" + result);

        //if...else statement to print results of coin toss
        if (result==1){
            System.out.println("Result: heads");
        }else if (result==2){
            System.out.println("Result: Tails");
        }else System.out.println("Invalid result");

        if (guessNo==result){
            System.out.println("Guess Correct");
        }else System.out.println("Guess incorrect");

    }//method end

我是一个相对的java新手(显然!)所以非常感谢您的帮助!

最佳答案

建议在 nextInt(2) 结果中加 1 的答案是正确的,但可能不是正确的长期策略。在许多方面,Java 更喜欢尽可能从 0 开始的数字序列。例如,数组索引值从 0 到 length-1。

最好将头/尾的内部编码更改为使用 [0,1] 而不是 [1,2],并直接使用 nextInt 结果。

关于java - 当需要随机数时如何设置限制(1 或 2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19894556/

相关文章:

C++生成适合TSP的随机图

python - 如何使用高斯分布对列表进行洗牌

c++ - 如何使用 std::mt19937 避免相同的随机结果?

java - 使用 Guice 注入(inject)不可访问的属性

java - GWT 下载 Excel .xlsx 给我一个损坏的文件

java - 基本路径使用异常 : Cannot join to attribute of basic type

java - 在 appengine 端点 json 中保留数值

java - 在我的情况下 java.lang.UnsatisfiedLinkError 的原因是什么

C++ Arduino - 随机函数不起作用

perl - List::Util 'shuffle' 实际上是如何工作的?