作者回复: Math.random()是[0, 1)
所以Math.random()*(rangeEnd - rangeStart) + rangeStart就是
rangeStart + [0, 1) * (rangeEnd - rangeStart)
所以最小值就是0的时候,是rangeStart,最大值不包含为1的时候,就是rangeEnd
所以是 [rangeStart, rangeEnd)
Math.random的注释:
* Returns a {@code double} value with a positive sign, greater
* than or equal to {@code 0.0} and less than {@code 1.0}.
作者回复: 可以,稍微简单点可以这样写
(int)(Math.random(rangeEnd - rangeStart) + 0.5) + rangeStart,这个结果范围会是 [rangeStart, rangeEnd)
作者回复:
这里为了使用更多的操作符,确实搞得有点复杂。可以参考这节课里别的同学的提问和我的回答。有些别的写法更简单。
作者回复:
第一篇还没介绍方法,类这些概念,甚至import和包都没介绍,所以用了尽量少的语法点,完成一个基本的功能,介绍完Java中的语句。
ThreadLocalRandom在concurrent包里,更主要的是保证线程之间的随机性,也就是说每个线程独占一个random seed,这里涉及到的知识点就更多liao……
这个实现确实啰嗦,你有编程基础,可以想想有没有别的办法,可以既不引入新的语法和类,又可以让代码更简洁易懂~
作者回复: 后面猜数字游戏里为了取到边界值,是给end加了1的。
作者回复: 可以把代码贴出来看看,更能明确问题
作者回复:
可以,只要明白Math.random()*(rangeEnd - rangeStart) + rangeStart的值阈是 [rangeStart, rangeEnd)就可以
作者回复:
randNum就像是一张有名字的纸条。使用这个名字,既可以获取当前纸条上的内容(比如 double a = randNum + 1),也可以修改纸条上的内容,比如randNum = Math.random();。
这个纸条的官方学名,就叫做变量。
就好像我们做物理应用题一样,开始设:x = 9,那么x就是一个符号,它的值可以被修改。
作者回复: IntelliJ 本身对这种光标的操作快捷键比较少. 但是IntelliJ很机智的有一个支持Vim快捷键的编辑器IdeaVim, 如果你对这种光标操作快捷键有追求的话, 建议试试看.
安装的方式就是在Settings里面, Plugins, Marketplace, 搜索IdeaVim.