【问题标题】:How to use percentage weights with math.random如何在 math.random 中使用百分比权重
【发布时间】:2015-01-21 23:08:29
【问题描述】:

正在做家庭作业,老实说,甚至不知道如何去做。任何帮助表示赞赏。谢谢!

任务: 一个醉酒的人离开酒吧,步行回家。据观察,他平均有 60% 的时间向前走,30% 的时间向后走,10% 的时间摇摆不定(没有向前或向后移动)。

他的家距离酒吧 50 英尺(台阶)。编写一个名为“PS1P2”的程序,显示他在典型的夜晚醉酒步行回家时的动作。您的代码应该打印一系列“Forward”、“Backward”和“Wobble”字样 对应他的动作。

提示:您可以使用 Math.random() 生成的值来确定人的行为 在每个步骤中。

这是我目前的代码:

public static void main(String[] args) {
    double currentPos = 0;
    int houseDist = 50;
    int stepCounter = 0;
    double i;

    while(currentPos < houseDist){
        i = Math.random();
        if(i <= 0.6){
            System.out.println("Forward");
            currentPos++;
            stepCounter++;
        }
        if(i <= 0.9){
            System.out.println("Backward");
            currentPos--;
            stepCounter++;
        }
        else
            System.out.println("Wobble");
    }
    System.out.println("Total steps: " + stepCounter);
    System.out.println("The house has been reached!");



}//end main

想通了!不想让这看起来像是你们在为我做作业,只是需要从某个地方开始。感谢那些回答/帮助的人!

【问题讨论】:

  • 您确实需要尝试回答自己,否则这会被视为“给我看代码!”问题。你有任何工作代码吗?
  • 提示:Math.random() 的结果在 [0,1) 范围内。如果Math.random()的结果是均匀分布的,那么结果在[0,0.1)范围内的概率是……?
  • 在您发布的代码中,如果您使用else if,则无需检查i &gt; 0.6
  • 谢谢你。我已经改了
  • @Pancakes 如果没有第二个 else 之前的 else,它将无法正常工作 ifelse if (i &lt;= 0.9)。如果您已经完成了第一个子句(else 的用途),那么您不想输入第二个 if 子句。

标签: java math random percentage


【解决方案1】:

Math.random 不会自动为您解决这个问题...

在软件工程中,通常在编码开始之前有一个规划阶段。所以让我们计划吧!

我建议您在纸上考虑这个问题。假设你有一个 100 面的骰子,你会一遍又一遍地掷骰子,然后用它的值来判断这个人做了什么,对吧?我建议弄清楚你将如何做到这一点,然后先写在纸上。一步一步弄清楚(没有双关语)

然后,一旦你这样做了,就会意识到调用 Math.random 基本上就像掷骰子(不查找代码,我相信调用 Math.random(100) 会返回一个介于 1-100 之间的随机数,或者类似的东西。JavaDoc/Google 将能够帮助您正确调用它)。剩下的就看你写代码了。

【讨论】:

  • 我会让 OP 自己解决这个问题;)
  • Math.random() 不接受参数,它返回 0.0 到 1.0 之间。您正在考虑 Random.nextInt(100) 它将为您提供 0 到 99 之间的值(您提供的值是独占的)
  • 不错的答案!为了完整起见:只有 [Math.random()](docs.oracle.com/javase/7/docs/api/java/lang/Math.html#random()) 在范围内返回 double [0,1),没有Math.random(int)
  • 我相信你可以使用 Math.number(Math.random()*100) 来获取 1-100 之间的数字。我计划使用 while 循环并将数字范围与每个可能发生的(向前、向后、摆动)实例的概率相关联。
  • @Pancakes 听起来像是一个计划。如果您发现我的问题有帮助,我将不胜感激或打上绿色复选标记 ;)
猜你喜欢
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 2013-05-08
  • 2011-07-14
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多