【问题标题】:Java random number generator not workingJava随机数生成器不工作
【发布时间】:2014-06-20 00:44:44
【问题描述】:

我的随机数生成器不工作,我不明白。我是 android 编程的新手,我无法弄清楚这种代码的平静。我已经尝试了几种方法,但它不能正常工作。请帮帮我,我是新人请不要喷我。

示例:实际代码生成

生成的第一组树 1011010110

在同一游戏中生成的第二组树 100001111110011

 import java.util.Random;
 import android.util.Log;

 public class Tree {
 public Tree(int addition) {

    spawn = (int)(Math.random() * 2);
 }

我也试过了。

private Random random = new Random();
public Tree(int addition) {

    int randomNum = random.nextInt(2);
    spawn = randomNum;
}

感谢您查看此内容。

史蒂夫

【问题讨论】:

  • 它没有做什么/做错了什么?
  • 你的第二个和第三个代码sn-ps没有区别;你的意思是输入别的东西吗?无论如何,你没有给我们足够的信息;我没有看到代码有任何明显错误,而且您没有告诉我们错误的输出是什么以及您的期望是什么。
  • 对于中间和最后一个示例,Random#nextInt 返回一个介于 0(包括)和传入参数(不包括)之间的值,因此将结果加 1,您将得到 121211122221...
  • 欢迎来到stackoverflow! stackoverflow.com/questions/how-to-ask
  • 对不起,我使用 1 和 2 作为示例数字,我确实想要 1 和 0

标签: java android random


【解决方案1】:

我不确定您指的是哪个代码产生这些输出,但这行代码将返回 0 或 1...

spawn = (int)(Math.random() * 2);

这样的东西会返回一个介于 0 和 9 之间的数字

spawn = (int)(Math.random() * 10);

发生这种情况是因为 Math.random() 函数 Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. -- per http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#random()

*编辑 - 看起来输出是你所期望的,虽然第二组有一些可疑的重复......如果你输出这两个

private Random random = new Random();
public Tree(int addition) {

    int randomNum = random.nextInt(2); // this will be 0 or 1
    spawn = randomNum;                 // this will NOT BE RANDOM
}

我认为这是您在第二棵树中看到重复的地方。要解决此问题,您只需删除 spawn 变量,因为在这种情况下您所做的只是重新分配它。

【讨论】:

  • 不,它不会返回“1 或 2”。
  • 对不起,我以 1 和 2 为例。我真的很想产生 0 和 1。
  • 那么你实际上得到了什么输出?
  • 第一组树生成 1011010110 第二组树在同一游戏中生成 100001111110011
  • 查看我的答案的编辑,如果您在该部分同时输出 randomNum 和 spawn ,那么这将解释您的问题
【解决方案2】:

nextInt(int n)

返回一个伪随机、均匀分布的 int 值,介于 0(含)和指定值(不含)之间,取自此随机数生成器的序列。

参考在这里:

http://docs.oracle.com/javase/7/docs/api/java/util/Random.html

所以当你调用 random.nextint(2) 时,你会得到 0 或 1。

您可以添加一些值或更改参数以满足您的需要。

【讨论】:

  • 你能再看看我的游戏吗?我实际上以 1 和 2 为例。我实际上想要 1 和 0。我还添加了一个实际游戏生成的代码来向您展示正在发生的事情
  • 我不明白你的意思,所以我认为 nextInt(2) 会为你工作
猜你喜欢
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 2015-12-06
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多