我最近递交了一份作业,用于我的计算机科学课程。在其中我使用Random classover Math.random()方法来生成随机数。我的讲师给我打了个电话,声称这是一个“不必要的复杂化”,我应该避免在不是绝对需要的时候导入课程。
我没有反对她,我接受这是她首选的方法确实有它的优点,但我会感谢更广泛的(也许更有经验的)小组的意见 - 因为Math.random()调用无论如何,随后的类和(afaik)在每次调用方法时都会创建一个新的Random对象,那么切断中间人是不是有意义呢?
由于
答案 0 :(得分:8)
Math.random()
确实使用Random
,但它使用单个实例。
但是,由于Math.random()
相当于Random.nextDouble();
通常不是很有用,因此使用它代替Random
类是愚蠢的,因为它有很多方便的方法可以使你的意图明确并且错误的可能性较小,如下面的代码片段所示。
int x = (int)(Math.random() * 100); // Without parentheses you'll always get 0
int y = rnd.nextInt(100);
我怀疑你的讲师对编程有很强的理论知识。
答案 1 :(得分:1)
我认为你的导师是错误的。可维护性应该是您的主要目标之一,并且可重复性对于调试和可维护性至关重要。 Math.random()
使您无法控制播种,因此如果在测试和调试期间发现奇怪的内容,则无法重现。
答案 2 :(得分:-1)
如果这个问题由于过于主观而被关闭,我不会感到惊讶。 但无论如何 -
我想说这取决于具体情况。你的错误是'使用随机导致不良性能,不可读的代码,或任何东西?如果没有,那我认为没关系。
人们可以挑剔这些事情,但实际上 - 至少在我看来 - 还有比这些理论问题更令人担忧的事情。