如何在Java中从两个字符中选择一个生成随机字符?

如何在Java中从两个字符中选择一个生成随机字符?,java,random,Java,Random,我想创建一个有50%几率返回字符串的代码,“h”,另外50%几率返回“t”。我知道Java中有一种生成随机字符串的方法,但是我如何将它限制到只能从中获得'h',而't' 这是一个简单的正面和反面的游戏。用户输入h(正面)或t(反面),代码生成随机答案。您的意思是: char[] sequence = {'t', 'h'}; Random random = new Random(); char result = sequence[random.nextInt(sequence.length)];

我想创建一个有
50%几率返回字符串的代码,
“h”
,另外50%几率返回
“t”
。我知道Java中有一种生成随机字符串的方法,但是我如何将它限制到只能从中获得
'h'
,而
't'

这是一个简单的正面和反面的游戏。用户输入h(正面)或t(反面),代码生成随机答案。

您的意思是:

char[] sequence = {'t', 'h'};
Random random = new Random();
char result = sequence[random.nextInt(sequence.length)];
你是说:

char[] sequence = {'t', 'h'};
Random random = new Random();
char result = sequence[random.nextInt(sequence.length)];

我会使用本地随机线程,例如

import java.util.concurrent.ThreadLocalRandom;

String ht = "ht"; // reused string
Random random = ThreadLocalRandom.current(); // reused Random
char flip = ht.charAt(random.nextInt(ht.length()));
我不会做的是

char[] sequence = {'t', 'h'}; // creates a new array each time
Random random = new Random(); // creates a new Random object each time
char result = sequence[random.nextInt(sequence.length)];
我唯一能找到的就是导入java.util.Random,但在这种情况下似乎不起作用

您确实应该能够导入这个类。如果没有,则可能是IDE配置已损坏、微型JDK已被削减,或者是导入的
格式不正确


如果不阅读错误消息,就无法说。

我会使用本地随机线程,例如

import java.util.concurrent.ThreadLocalRandom;

String ht = "ht"; // reused string
Random random = ThreadLocalRandom.current(); // reused Random
char flip = ht.charAt(random.nextInt(ht.length()));
我不会做的是

char[] sequence = {'t', 'h'}; // creates a new array each time
Random random = new Random(); // creates a new Random object each time
char result = sequence[random.nextInt(sequence.length)];
我唯一能找到的就是导入java.util.Random,但在这种情况下似乎不起作用

您确实应该能够导入这个类。如果没有,则可能是IDE配置已损坏、微型JDK已被削减,或者是导入的
格式不正确



如果不阅读错误消息,就无法进行判断。

只获取h或t是很容易的,但是如果您希望它是50/50,它不再是随机的。google“掷骰子java”有一种方法可以在java中获得各种随机的东西。你只需要有两种选择。你看了什么吗?你到底想要什么输入和输出,你能分享一个例子吗?@Tyler当然可以,只要你正确地使用它
java.util.Random
Math.Random()
一样都是很好的随机源。如果使用
Random
类,只有两种可能的结果,并且有50/50的几率,那么只获得h或t是很容易的,但是如果你希望它是50/50,它就不再是随机的。google“掷骰子java”有一种方法可以在java中获得各种随机的东西。你只需要有两种选择。你看了什么吗?你到底想要什么输入和输出,你能分享一个例子吗?@Tyler当然可以,只要你正确地使用它
java.util.Random
Math.Random()
一样都是很好的随机源。如果使用
Random
类时只有两个可能的结果,并且有50/50的几率,请查看编辑以获得澄清。使用
Character[]
而不是
char[]
的原因是什么?我建议不要每次调用nextInt都创建一个新的随机对象。没有原因,这是一个输入错误@phflackIt只是一个调用@Dukeling,我这样做了,谢谢你我编辑了它,现在它更清晰了。有没有理由使用
Character[]
而不是
char[]
?我建议不要每次调用nextInt都创建一个新的随机对象。没有理由,“这是一个输入错误@phflackIt只是一个呼叫@Dukeling,因为我这样做,谢谢你我编辑了它,现在它更清楚了,为什么我不应该使用你说不可以使用的代码?”泰勒我补充道。这些会创建相对昂贵且不必要的对象。在大多数情况下,这并不重要,但进入IMHO是一个坏习惯。@zlakad true,尽管您可能希望在某些项目中避免可变的
静态final
字段。(在这里不太可能是个问题)例如,
字符串是不可变的,而且定义起来更短。为什么我不应该使用你说的不可以使用的代码?@Tyler我添加了评论。这些会创建相对昂贵且不必要的对象。在大多数情况下,这并不重要,但进入IMHO是一个坏习惯。@zlakad true,尽管您可能希望在某些项目中避免可变的
静态final
字段。(虽然在这里不太可能是个问题)例如,
字符串是不可变的,定义时间更短。