当前位置: 首页 > 面试题库 >

Java Math.random()解释

胡野
2023-03-14
问题内容

这是一个非常简单的Java(尽管可能适用于所有编程)问题:

Math.random()返回介于零和一之间的数字。

如果我想返回零到一百之间的整数,我会这样做:

(int) Math.floor(Math.random() * 101)

在一百到一百之间,我会做:

(int) Math.ceil(Math.random() * 100)

但是,如果我想得到三到五之间的数字怎么办?它会像下面的语句:

(int) Math.random() * 5 + 3

我知道nextInt()java.lang.util.Random。但是我想学习如何使用Math.random()


问题答案:
int randomWithRange(int min, int max)
{
   int range = (max - min) + 1;     
   return (int)(Math.random() * range) + min;
}

输出randomWithRange(2, 5)10次​​:

5
2
3
3
2
4
4
4
5
4

边界是包含边界的,即[2,5],并且min必须小于max上面的示例。

编辑:如果有人要尝试并变得愚蠢和扭转min和max,你可以将代码更改为:

int randomWithRange(int min, int max)
{
   int range = Math.abs(max - min) + 1;     
   return (int)(Math.random() * range) + (min <= max ? min : max);
}

EDIT2:关于doubles 的问题,只是:

double randomWithRange(double min, double max)
{
   double range = (max - min);     
   return (Math.random() * range) + min;
}

再说一次,如果你想证明这一点,那就是:

double randomWithRange(double min, double max)
{
   double range = Math.abs(max - min);     
   return (Math.random() * range) + (min <= max ? min : max);
}


 类似资料:
  • 问题内容: 我已经阅读了一些博客和一些与优化有关的文章,介绍了如何优化查询。我读到我需要使用索引,并确保使用良好的关系数据库架构正确设置了所有主键和外键。 现在,我有一个查询需要优化,并且可以在上获得此查询: 我正在使用MySQL 5.5 我知道我正在使用但不使用我的临时表或文件排序吗?这是什么意思? 问题答案: 使用临时意味着MySQL需要使用一些临时表来存储执行查询时计算出的中间数据。 使用文

  • 问题内容: 为简单起见,请设想这种情况,我们有一台2位计算机,它具有一对称为r1和r2的2位寄存器,并且仅适用于立即寻址。 假设位序列 00 表示 添加 到我们的CPU中。也 01 的装置将数据移动到R 1和 10组 的装置将数据移动到R2。 因此,这台计算机和一个汇编器都有一种汇编语言,其中的示例代码将像 简而言之,当我将此代码汇编成本地语言时,文件将类似于: 上面的12位是以下代码的本机代码:

  • @Required注解应用于bean属性的setter方法,它表明影响的bean属性在配置时必须放在XML配置文件中。 十九、请举例说明@Qualifier 注解? 如果在xml中定义了一种类型的多个bean,同时在java注解中又想把其中一个bean对象作为属性,那么此时可以使用@Qualifier加@Autowired来达到这一目的,若不加@Qualifier这个注解,在运行时会出现“ No

  • 请向我解释为什么我总是得到这个错误: 显然,我只在开发模式下得到它,它不会在我的生产构建中发生,但这非常烦人,我根本不明白在我的开发环境中出现错误不会在prod上显示的好处--可能是因为我缺乏理解。 或者强制使用如下构造函数检测更改:: 但是为什么我总是遇到这个错误呢?我想了解它,这样我就可以避免这些黑客修复在未来。

  • 本文向大家介绍请解释下你对EventEmitter的理解相关面试题,主要包含被问及请解释下你对EventEmitter的理解时的应答技巧和注意事项,需要的朋友参考一下 EventEmitter是Node基于发布订阅模式实现的第三方库events EventEmitter多用于被继承,而并非直接使用 EventEmitter中实现了on、emit、once、off、listen等其他功能 当on中监

  • 我试图更深入地理解OpenGL,但我遇到了以下问题。 这部分描述了我的理解,输出是假设的。 上述代码段的窗口坐标(Wx、Wy、Wz)为 (272.00000286102295,111.99999332427979,5.9604644775390625e-008) (527.99999713897705,111.99999332427979,5.9604644775390625e-008) (527