如何解决获得最接近另一个double值但仍是随机的的随机double值
|| 假设我想得到一个随机的double值,它是: 大于-0.150 小于+0.150 最接近0.440 这个数字必须是随机的... 我怎样才能做到这一点? 附加信息: 就像您说的... 0.440不在[-0.150,0.150]中,但我需要生成一个在该范围内接近该数字的数字... 假设我打电话给:getMyRandomNumber(-0.150,0.150,0.440)
我想得到一个在[-0.150,0.150]范围内的数字,但并非总是0.150
我想得到像0.139、0.140、0.121这样的数字...
如果我打电话给:
getMyRandomNumber(-0.150,-0.440)
我想得到-0.139,-0.140,-0.121等数字
解决方法
Random \的NextDouble()返回0.0到1.0之间的随机数
如果要基于NextDouble()中的随机数在间隔(a,b)中获取随机数,则需要将(0.0,1.0)间隔映射到所需的(a,b)间隔。
最简单的方法是使用以下公式:
result = a + (b - a) * X
其中X
是NextDouble()
的结果
如果X
为0,则result
将为a
,如果X
为1,则result
将为b
,对于X
在0.0和1.0之间,the6ѭ将在a
和b
之间。
如果您希望数字接近某个数字(例如0.44)但相距不超过0.15,则需要将结果映射到(0.44-0.15,0.44 + 0.15)区间。
, Random g = new Random();
double max = double.MaxValue;
double a = g.NextDouble() * max - 0.150; // greater then -0.15
double b = -g.NextDouble() * max + 0.150; // less then 0.15
最接近的是不清楚的定义
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。