楼主:
l2ll (咚叮咚咚)
2014-12-10 17:19:36第一次java发文,如果违反版规还请告知,自删
自己写专题程式需要利用到一个值
必须 >=0 <=1
然而以往都是只有用到 >=0 <1 的数
所以开始思考要怎么写 原本以为会很容易
想到的方法是
利用 Math.round 把小数后面某个很小的值4舍5入
让=1的部分可以成立,而且数值影响不大,所以就这样写
但是随便想想都不太正确
首先,这样小数后面最少最少也少了一位
再来,机率上应该就不是完全的随机了
举例来说: 想要一个小数一位的 0<=x<=1
random得到一个 0<=x<1
x*10得 0<=x<10
(Q) Math.round(x)得 0<=x<=10 x为整数
x/10得 0<=x<=1 x为一位小数
第Q行 这边机率上,得到0跟10的机率都只有其他值的一半
0.000~0.499 9.500~9.999 相较于 0.500~1.499 的感觉
才想到有没有可能做出真的随机的 0<=x<=1
楼主:
l2ll (咚叮咚咚)
2014-12-10 18:13:00好的,感谢你只是想是不是有办法利用逻辑生出来XD
作者:
ssccg (23)
2014-12-10 18:46:00看Random.nextDouble是(((long)next(26) << 27) + next(27)) /(double)(1L << 53)你要最大值是1就是分母改-1
直觉=> >=1一个 <=0一个 用另外一个random去看要哪一个或是random不到范围内的就重random 反正范围外的很小抱歉 精神不好看成要两段的...QQ
看要小数几位,假设两位,那取0到100,再除以100?这样可行吗?
楼主:
l2ll (咚叮咚咚)
2014-12-11 13:07:00可以喔~~~~也比较没有机率问题
作者: lubright2258 2014-12-14 16:55:00
利用sin(x) x=random从0~(pi/2+很小的数) !?