2014-12-07 50 views
1

所以我想让我的代码得到一个基于用户输入的随机数生成。而我目前的声明并没有产生适当的范围。获取用户输入的范围内的随机生成

secretNum = low + (int)(Math.random()* max); 

其中低位是范围的最低部分,高位是最高位置。例如。如果低为5,高为10,这是否会产生1-50的范围? (5 * 10)。

回答

0

必须使用这 -

secretNum = min + (int)(Math.random() * ((max - min) + 1));  

如果低为3,例如,高为7,随机数将是要么-3,4,5,6-或7

0

我想用这个Random object

你喜欢这个创建它:

Random r = new Random(); 

然后从那里,它是非常容易使用。对于从0(含)〜50(不含)随机INT,只是做:

int randomNumber = r.nextInt(50); 

我认为它使这一切你要容易得多。如果用户输入10和140,然后你做这样的事情:

int lowest = 10; 
int highest = 140; 
int randomMax = 140-10; 
int randomNumber = r.nextInt(randomMax) + 10; 

这可能要做到这一点最简单的方法。

1

您保存在变量in用户输入:

String in = sc.nextLine(); 

然后创建的java.util.Random一个实例与种子作为输入的哈希:

Random r = new Random(in.hashCode()); 

int randomNumber = r.nextInt(); 

如果你想生成一个最大值和最小值之间的随机数看到this Questionthis one但你需要将C++转换成的java:

C++:

output = min + (rand() % (int)(max - min + 1)) 

爪哇:

output = min + (r.nextInt() % (max - min + 1)) 
相关问题