java中的随机性和概率

时间:2017-07-28 06:40:11

标签: java random javafx probability

我试图在Java中制作小型赌博游戏,用户有两种选择。

一个TextField,他可以用他想要下注的数量写一个ComboBox,在那里他可以选择他有多少机会获胜。 comboBox提供10%,20%,30%,40%和50%的选项。

我的问题是我不知道如何在java中应用概率。我尝试过以下方法:

public class GamblingGame {

private int rdmNumber;
private int wonValue;

public int winOrLose(int valueBetted, int precentToWin, Label label, int attempts){


    precentToWin = precentToWin/10;

    rdmNumber= ThreadLocalRandom.current().nextInt(precentToWin, 10 +1);


    System.out.println("this is rdmnumber: " + rdmNumber);
    System.out.println("this is precentowin number: " + precentToWin);

    //if the number you rolled is equal to the precent you choose (ie if its 10, the number is 1, if its 20 the number is 2)
    if(rdmNumber == precentToWin) {
        wonValue = valueBetted/precentToWin *2;

        System.out.println("You win!");

        label.setStyle("-fx-text-fill: green");
        label.setText("You won! You recieved: " + wonValue+" coins!");
    }

    else{
        label.setStyle("-fx-text-fill: red");
        label.setText("Gamble failed! You lost: " +valueBetted + " coins. ("+attempts+")");
        wonValue = -valueBetted;

    }


    System.out.println(wonValue);
    return wonValue;



}

}

问题在于,例如,如果用户在组合框中投入50%,他将无法获得真正的50%获胜机会。

骰子需要在这里滚动的数字是5才能获胜,最大值是10.因此用户可以在5-10之间滚动一个数字,当他达到5时,他就赢了。

我如何才能使掷骰子的百分比达到真正的50%? (当然不会破坏它,所以如果我把差异作为参数,它不会破坏方法)

3 个答案:

答案 0 :(得分:0)

尝试Random

Random random = new Random();
int i = random.nextInt(100);
if(i<50){
    //do something
}

答案 1 :(得分:0)

你尝试这个功能怎么样?

private static Random rd = new Random();
    public static boolean winner(int prob)
    {
        int value = rd.nextInt(100);
        System.out.println("GOT: "+value+" probability of winning:"+prob+"%");
        if(prob>value)
            return true;
        else
            return false;
    }   
在这种情况下,概率num应该大于获得的随机数。 所以,如果你运行它..它将工作

  public static void main(String[] args) {
                //sure winner
                System.out.println(winner(99));
                //random winner
                System.out.println(winner(50));
                //not a chance
                System.out.println(winner(10));
            }

答案 2 :(得分:0)

非常感谢两位回复的人!它让我意识到我所要做的就是改变跟随。

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
       let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "expandableHeaderView") as! ExpandableHeaderView
        header.customInit(Productname: mijnproducten01[Mijnproducten].productname, Productdesc: mijnproducten01[Mijnproducten].productdesc, section: section, delegate: self)
        //print("print", mijnproducten01)
        return header
    }

所以现在,它所看到的数字总是1-10,但正确的数字不是一个数字,而是多个数字。

再次感谢!