【问题标题】:Roll 5 custom dice in java [duplicate]在java中滚动5个自定义骰子[重复]
【发布时间】:2018-02-02 22:41:07
【问题描述】:

我试图开始一段应该掷 5 个骰子的小段代码。 4 个骰子的数字应该来自 dietype1 (2,3,4,5,6,10),第 5 个骰子应该有 dietype2 的数字 (1,2,4,5,6,10)。我不知道如何执行随机选择。我查找的一些示例使用 Random 或其他一些我不熟悉的方法。

我还有一个关于我设置两种不同类型骰子的方式的问题。使用列表是最简单的选择还是 ArrayList 更有意义?

非常感谢任何有关如何指导我或更好地设置列表的意见!

这是我目前所拥有的......

public class inc1{
   private int die1;
   private int die2;
   private int die3;
   private int die4;
   private int die5;
   List<Integer> dietype1 = Arrays.asList(2, 3, 4, 5, 6, 10);
   List<Integer> dietype2 = Arrays.asList(1, 2, 4, 5, 6, 10);

   public void roll(){
   }

   public static void main(String[] args){
   }
}

【问题讨论】:

  • ArrayList 是 List 的一种。
  • 这个“die1”,...,“die5”是干什么的...不要重复自己。
  • 我假设骰子在掷出时可能出现的结果是相互独立的。因此,您只需要为每个随机值选择一个随机值,并将该随机值放入其相应的数组位置即可获得完整的随机列表。您需要获取随机库调用的结果并将其映射到您拥有的任何值。最简单的方法是如果你有 N 项目,只需使用随机整数模块 N
  • 看起来有人有同样的任务:stackoverflow.com/questions/48591959/…

标签: java


【解决方案1】:

相信你对List#get(int)很熟悉吧?如果是这样,这应该很容易。只需使用ThreadLocalRandom#nextInt(int)

dietype1.get(ThreadLocalRandom.current().nextInt(dietype1.size()));

【讨论】:

  • 没有什么比ThreadLocalRandom 更响亮地尖叫“我从其他地方复制了我的作业”。 ;) +1
  • nextInt() 期望独占绑定。
  • @shmosel 在这种情况下,你错了。在我的回答中点击nextInt 所附的链接。
  • @CardinalSystem 我建议你也这样做。
  • @DawoodibnKareem List#size() 返回列表中元素的数量。在 Java 中,索引从零开始,所以如果我没有包含 -1 并且 ThreadLocalRandom 返回列表大小,那么它会抛出一个索引越界异常。除非 nextInt 返回之间但不包括传递的边界,我只是忘记了......
猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 2013-09-17
  • 1970-01-01
  • 2021-12-15
  • 2016-08-10
  • 2016-03-14
  • 2018-09-06
  • 2021-11-13
相关资源
最近更新 更多