【问题标题】:Getting random number from array of numbers从数字数组中获取随机数
【发布时间】:2014-06-19 20:18:57
【问题描述】:

如何从数组中获取单个随机数并将其保存到变量中?

final Integer[] itemKonci1 = new Integer[]  {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47
    ,49,51,53,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97};

【问题讨论】:

  • 您是否尝试过实现这一目标?如果是这样,请发布您编写的代码以及哪些代码不起作用。
  • “来自这些数组的随机数”是什么意思?您想要每个数组中的一个还是可以来自任一数组的单个数字?
  • 任一数组中的单个数字。
  • 您是否希望有 50% 的机会从第一个数组中选择一个数字,并有 50% 的机会从第二个数组中选择一个数字,或者您是否希望像组合数组一样选择数字成一个数组?

标签: java random


【解决方案1】:

使用Random.nextInt(n),您可以生成介于 0(含)和数组长度(不含)之间的随机索引。该随机索引可以传递给数组的索引运算符,以从数组中获取随机值。类似于以下内容:

import java.util.Random;

public class Example {
    final static Integer[] itemKonci1 = new Integer[] { 1, 3, 5, ..., 93, 95, 97 };

    public static void main(String[] args) {
        Random r = new Random();
        int randomValueFromArray = itemKonci1[r.nextInt(itemKonci1.length)];
        // Do something
    }
}

【讨论】:

    【解决方案2】:

    如 azurefrog 所述,您将使用 Random

    首先创建一个实例

    Random r = new Random();
    

    由于要从数组中进行选择,所以需要生成一个介于 0 和 array.length 之间的随机索引

    int index = r.nextInt(array.length);
    

    使用该索引从数组中获取值

    int result = array[index];
    

    这通常适用于任何数组。但在您的示例中,您不需要将值存储在数组中。

    如果你想要一个小于 98 的随机正数,你可以使用r.nextInt(98)。但你想让它变得奇怪。因此,您可以通过明智的做法或使用 1 来设置第一位

    int 结果 = r.nextInt(98) | 1;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2013-08-13
      • 1970-01-01
      相关资源
      最近更新 更多