如何从Java中的randDouble获得1到100之间的随机值?

时间:2011-10-04 02:17:23

标签: java random

好的,我还是Java的新手。我们已经获得了一个帮助来创建一个游戏,您必须猜测计算机生成的随机整数。问题是我们的讲师坚持要求我们使用:

double randNumber = Math.random();

然后将其转换为接受1 - 100(包括1和100)的随机整数。我有点不知所措。到目前为止我所拥有的是:

//Create random number 0 - 99
double randNumber = Math.random();
d = randNumber * 100;

//Type cast double to int
int randomInt = (int)d;

然而,随机双重的延迟问题的随机性是0是可能性而100不是。我想改变它,以便0不是可能的答案,100是。救命?

6 个答案:

答案 0 :(得分:15)

你快到了。只需在结果中添加1:

int randomInt = (int)d + 1;

这会将您的范围“转移”到1 - 100而不是0 - 99

答案 1 :(得分:15)

Random r = new Random();
int randomInt = r.nextInt(100) + 1;

答案 2 :(得分:0)

这是一个干净且有效的方法,通过范围检查!享受。

fontImage

//稍后请致电:

confirm

答案 3 :(得分:0)

我会写 整数= 1 +(整数)(Math.random()* 100);

答案 4 :(得分:0)

ThreadLocalRandom类提供了int nextInt(int origin, int bound)方法来获取范围内的随机整数:

// Returns a random int between 1 (inclusive) & 101 (exclusive)
int randomInt = ThreadLocalRandom.current().nextInt(1, 101)

ThreadLocalRandom是用Java生成随机数的几种方法之一,包括较旧的Math.random()方法和java.util.Random类。 ThreadLocalRandom的优点在于,它是专门为在单个线程中使用而设计的,从而避免了其他实现带来的额外线程同步成本。因此,通常在安全敏感的上下文之外使用它是最好的内置随机实现。

在适用的情况下,在并发程序中使用ThreadLocalRandom而不是共享的Random对象通常会减少开销和争用。

答案 5 :(得分:-2)

    double random = Math.random();

    double x = random*100;

    int y = (int)x + 1; //Add 1 to change the range to 1 - 100 instead of 0 - 99

    System.out.println("Random Number :");

    System.out.println(y);