如何返回随机字符串arrayjava

如何返回随机字符串arrayjava,java,Java,我对Java非常陌生,所以这对大多数人来说似乎太容易了……这完全错了吗? 我的问题是如何编写一个方法selectRandom(String[]names), 它返回从给定数组中随机选择的名称 应以相同的概率选择每个名称 public static String selectRandom(String[] names) { String num = names[0]; int[]newArray = new int[names.length]; for(i

我对Java非常陌生,所以这对大多数人来说似乎太容易了……这完全错了吗? 我的问题是如何编写一个方法
selectRandom(String[]names)
, 它返回从给定数组中随机选择的名称

应以相同的概率选择每个名称

public static String selectRandom(String[] names)    
{    
    String num = names[0]; 
    int[]newArray = new int[names.length];
    for(int i =0; i<names.length;i++)
    {
      Random r = new Random();
      int ranNum= r.nextInt(names.length)+1;
      num = names[ranNum];
    }
    return num;  
}
公共静态字符串selectRandom(字符串[]名称)
{    
String num=名称[0];
int[]newArray=newint[names.length];

对于(inti=0;i,您只需生成一个数组大小的随机数,并获取该索引处的值

public static String selectRandom(String[] names) {
    if (name != null && names.length > 0) {
        Random r = new Random();
        return names[r.nextInt(names.length)];
    }
    return null;
}

您不需要方法中的大多数代码。也许您应该尝试类似的方法?

随机选择一个索引,并在
名称中返回相应的
字符串。java中有一个类可以获取随机数。还可以检查方法


你不需要在那里有一个循环。只要选择随机索引并返回相应的字符串。步骤:随机选择一个小于数组长度的数字,返回数组元素?你能将其转换为代码吗?我认为这里的主要问题不是如何获得随机数。因为OP提到每个名称都应该用相等的p来选择概率。我认为他需要一个统一的随机函数。我不认为java核心库中的随机函数是统一的。@Kent
int java.util.random.nextInt(int n):返回一个新的伪随机整数值,该整数值均匀分布在0(包括)和n(独占)之间
@pankar再次检查了文档。返回一个伪随机的、均匀分布的int值,介于0(包括)和指定值(不包括)之间…u r right.thx。我想我有点与real random混淆了…如果(names.length>0),你也应该添加空检查
它可能会填充空指针异常。@Vulcan您能告诉我如何从数组中选择一个随机字符串值,并且每次都需要其他字符串。我的意思是如果我不想重复相同的字符串值,我需要在代码中做什么修改。@Kunu创建另一个字符串数组(或布尔值)并记录您已经随机选取的字符串。@Vulcan我也在考虑这个问题,但我认为先询问其他人是明智的,这样如果随机函数中存在任何直接方法,我就可以轻松地完成。谢谢您的回答。它也可能生成NullPointerException。@Russell Gutierrez您能告诉我如何选择吗从一个数组中随机抽取一个字符串值,并且每次我都需要一些其他字符串。我的意思是,如果我不想重复相同的字符串值,我需要在代码中做什么修改。
public static String selectRandom(String[] names)    
{    
      Random r = new Random();
      int ranNum= r.nextInt(names.length);
      return names[ranNum];

}
public static String selectRandom(String[] names)    
{    
   Random rand = new Random();
   int index = rand.nextInt(names.length);
   return names[index];
}