【问题标题】:How do yo randomly assign a value to a variable? [closed]如何随机为变量赋值? [关闭]
【发布时间】:2014-10-31 09:49:03
【问题描述】:

如何将随机值分配给变量“myVariable”,使其成为“a”、“b”或“c”?我尝试了以下方法,但出现了几个错误:

Random r = new Random();
String i = r.next()%33;
switch (i) {
  case 0:
    myVariable = "a";
  case 1:
    myVariable = "b";
  case 2:
    myVariable = "c";
}

【问题讨论】:

  • 提供必要的代码来重现您的确切错误。另外,不要忘记为变量提供默认值。
  • 我认为r.next()%33 不会返回字符串。
  • r.next() 的大小参数在哪里?不,它不返回字符串,您的 switch 语句也不是为使用字符串而编写的。阅读 javadoc?

标签: java string variables random


【解决方案1】:

你应该使用

r.nextInt(3);

从 0-2 范围内获取一个数字。所以,

switch(r.nextInt(3)) {
  case 0: myVar = "a"; break;
  case 1: myVar = "b"; break;
  case 2: myVar = "c"; break;
}

【讨论】:

    【解决方案2】:
    Random rand = new Random();
    int min = 97; // ascii for 'a'
    int randomNum = rand.nextInt(3) + min;
    char myVariable = (char)randomNum;
    

    【讨论】:

      【解决方案3】:

      通常,当涉及到一个随机数时,我只是检查它是否在一个范围内,例如..

      Random random = new Random();
      int output = random.next(100);
      
      if(output > 0 && output < 33) {
          myVariable = "a";
      }
      else if(output >= 33 && output < 66) {
          myVariable = "b";
      }
      else {
          myVariable = "c";
      }
      

      这为每个出现的值提供了几乎相等的概率。

      【讨论】:

        【解决方案4】:

        所有好的答案,但这里有一个不同的答案:

        class Randy {
            private final String[] POSSIBLE_VALUES = { "foo", "bar", "baz", ... };
            private final Random random = new Random();
        
            String getRandomValue() {
                return POSSIBLE_VALUES[random.nextInt(POSSIBLE_VALUES.length)];
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2022-01-20
          • 2021-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-27
          • 2012-12-12
          相关资源
          最近更新 更多