【问题标题】:Generating a random character out of any two in Java在 Java 中从任意两个字符中生成一个随机字符
【发布时间】:2011-05-29 10:51:26
【问题描述】:

如何在两个特定字符之间生成随机字符?例如;我想生成“h”或“v”之一。

谢谢

【问题讨论】:

  • 你试过什么?你用过 Random 类了吗?它有一个可以很好地为您工作的 nextBoolean 方法。
  • 请更具体或举例说明。
  • @Hovercraft Full Of Eels:为什么用不必要的“你试过什么?”这样的尖刻评论是一个寻找答案的地方,我开始得到一个有点被像你这样的人激怒了,他们总是说 “你试过什么?”。如果您认为 Random + nextBoolean 可以回答,那么继续,帮助 OP,帮助 SO 社区,花时间写下 alexbrn 的答案 写了(并获得了 +5 票),而不是评论-匆忙-嫖娼你的“你试过什么?”
  • @Hovercraft Full Of Eels:如果我想知道如何从 Java 中的任意两个字符中生成一个随机字符,并且我会使用 Google 来查找它,那么我不在乎对于 OP 的尝试和您的 “您尝试了什么?” 评论。我关心 npinti 或 alexbrn 的答案
  • @SyntaxT3rr0r:很抱歉,您发现“您尝试过什么”这句话很刻薄,但它肯定不是那个意思。我自己作为一名程序员的经验是,如果我在寻求帮助之前先尝试某事,任何事情,我会学到更多,而我作为一名讲师的经验是,通过首先检查学生的错误假设,我对他们的错误假设有了更多的了解。试过了。这可以引导我找到一个更聪明、更有用的答案。此外,我在原始评论中发布的不仅仅是一个简单的“你尝试过什么”,还包括查找建议。 YMMV

标签: java random range character


【解决方案1】:
Random r = new Random();
char c = r.nextBoolean() ? 'v' : 'h';

注意构建您的 Random 对象一次并重新使用它;不要每次想要一个随机数就重新构造它!

【讨论】:

  • 我会避免使用三元运算符。对 Java 还不太了解的人可能会感到困惑。
  • @Ishtar:对 Java、C、C++、C# 以及所有其他支持三元运算符的语言都不太了解的人应该更好地开始学习它......这个答案是如此简洁明了,这是了解三元运算符如何工作的非常的一个很好的起点。
【解决方案2】:

如果您想生成一个字符,如您所说的 h 或 v,您可以使用 Random 类生成一个随机数,如 here 所示。比如随机数大于0.5,则选v,否则选h。

另一方面,如果你有一个字母范围,你可以生成一个包含你想要的字符的数组并生成一个随机数,该随机数将用作选择随机字母的索引,或者,你可以生成 65(A 的 Aschii)和 90(Z 的 Aschii)之间的随机数。你可以找到更多Aschii字符here

【讨论】:

  • 如果这个答案解决了你的问题,那么,请点击“非常好”标记:)
【解决方案3】:

怎么样:

import java.util.Random;


....

Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(100);
char chosen = randomInt % 2 == 0 ? 'h' : 'v';

【讨论】:

    【解决方案4】:

    要在两个给定字符之间生成随机字符,您可以执行以下操作:

       char genRandChar(char char1, char char2)
        {
           char retVal;
    
           int val1= (int) char1; //cast char1 to its integer ASCII value
           int val2= (int) char2; //cast char2 to its integer ASCII value
    
           //assuming val1<val2
           retVal=(char)(val1+(int)(Math.random()*((val2-val1)+1)); //generate a random number between val1 and val2 and cast it to a character
           return retVal;
        }
    

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 2023-01-08
      • 2013-03-02
      • 2012-02-03
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多