如何int
在特定范围内生成随机值?
我试过以下,但那些不起作用:
尝试1:
randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
Run Code Online (Sandbox Code Playgroud)
尝试2:
Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum = minimum + i;
// Bug: `randomNum` can be smaller than `minimum`.
Run Code Online (Sandbox Code Playgroud) x = rd.nextInt((4000) - 2000) / 1000.0;
Run Code Online (Sandbox Code Playgroud)
这是在 [0, 2] 到十进制小数之间生成数字,这是我想要的,我只需要负数,所以生成的数字范围在 [-2, 2] 之间。
我不明白为什么它不会产生超过11.
这是我的测试代码:
import java.util.Random;
public class randomNumberTest
{
public static void main(String[] args)
{
Random rn = new Random();
//tests random number generator (between 1(inc) and 10(excl))
for(int i =0; i < 100; i++)
{
int answer = rn.nextInt(10) + 1;
System.out.println(answer);
}
}
}
Run Code Online (Sandbox Code Playgroud)