关于随机索引的问题
来源:1-9 作业解析:只创建一个 Random 类
当个废物挺好_66
2020-10-30 22:49:56
老师在优化快排中提到,由于每次partition都需要创建Random对象,可以在 第一个函数创建Random对象,然后作为参数传递,省去了频繁创建对象的步骤,避免耗时,那么直接利用Java提供的Math类产生随机数,会不会更好呢,我在测试数十次过程的这种方法比上诉方法大部分要快那么一丢丢
int p = l + (int)(Math.random() * (r - l + 1)); //(int)(Math.random() * (r - l + 1)产生[0,r-l]范围内的整数
1回答
可以的,只要不重复创建对象,就没有我在这一小节说的内存开销问题。
但是对于 Java 语言来数,产生随机数,使用 Random 类的 nextInt,是更好的选择。可以参考这里的讨论:https://stackoverflow.com/questions/738629/math-random-versus-random-nextintint
不过这种区别已经超出这个课程讨论的范畴了,在大多数情况下,你的方式没有问题的:)
继续加油!:)
相似问题