在java中获取随机布尔值

好吧,我对我的代码实现了这个SO问题: 随机返回True或False

但是,我有一个奇怪的行为:我需要同时运行10个实例,其中每个实例每次只运行一次就返回true或false。 令人惊讶的是,无论我做什么,每一次我只是false

有什么改进的方法,所以我可以有至less大约50%的机会成为true


为了使它更容易理解:我有我的应用程序build立到JAR文件,然后通过批处理命令运行

  java -jar my-program.jar pause 

该计划的内容 – 尽可能简单:

 public class myProgram{ public static boolean getRandomBoolean() { return Math.random() < 0.5; //I tried another approaches here, still the same result } public static void main(String[] args) { System.out.println(getRandomBoolean()); } } 

如果我打开10个命令行并运行它,每次都得到false结果

我推荐使用Random.nextBoolean()

这就是说, Math.random() < 0.5 ,你也使用过。 以下是我的机器上的行为:

 $ cat myProgram.java public class myProgram{ public static boolean getRandomBoolean() { return Math.random() < 0.5; //I tried another approaches here, still the same result } public static void main(String[] args) { System.out.println(getRandomBoolean()); } } $ javac myProgram.java $ java myProgram ; java myProgram; java myProgram; java myProgram true false false true 

不用说,每次获得不同的值都不能保证 。 不过,我怀疑你的情况

A)你没有使用你认为自己的代码(比如编辑错误的文件)

B)在testing时,你没有编译你的不同的尝试,或者

C)你正在使用一些非标准的破坏实现。

你也可以尝试nextBoolean()方法

这里是一个例子: http : //www.tutorialspoint.com/java/util/random_nextboolean.htm

你有没有试过查看sun的(oracle)文档?

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#nextBoolean ()

无论如何,这里的例子代码:

  java.util.Random Random random = new Random(); random.nextBoolean(); 

为什么不使用Random类,它有一个方法nextBoolean

 import java.util.Random; /** Generate 10 random booleans. */ public final class MyProgram { public static final void main(String... args){ Random randomGenerator = new Random(); for (int idx = 1; idx <= 10; ++idx){ boolean randomBool = randomGenerator.nextBoolean(); System.out.println("Generated : " + randomBool); } } } 

你可以得到你的clock()值,并检查它是奇数还是偶数。 我不知道这是不是真的

你可以自定义创build你的随机函数:

 static double s=System.nanoTime();//in the instantiating of main applet public static double randoom() { s=(double)(((555555555* s+ 444444)%100000)/(double)100000); return s; } 

号码55555 ..和444 ..是大数字,以获得广泛的function,请忽略该Skype的图标:D

例如,初始化随机数生成器最简单的方法是使用无参数构造函数

 Random generator = new Random(); 

然而,在使用这个构造函数时,您应该认识到algorithm随机数生成器并不是真正的随机数,它们实际上是生成固定但随机数字序列的algorithm。

你可以通过赋予Random构造函数“seed”参数来让它看起来更“随机”,你可以通过例如系统时间(以毫秒为单位)

你也可以制作两个随机整数,并validation它们是否相同,这样可以更好地控制概率。

 Random rand = new Random(); 

声明一个范围来pipe理随机概率。 在这个例子中,有50%的可能性是真实的。

 int range = 2; 

生成2个随机整数。

 int a = rand.nextInt(range); int b = rand.nextInt(range); 

然后简单地比较返回值。

 return a == b; 

我也有一个class可以使用。 RandomRange.java

  • 生成一个整数随机数INTEGER_RANDOM_NUMBER

  • 返回(INTEGER_RANDOM_NUMBER&1)