我想说我希望获得一个随机双倍值:
这个号码必须是随机的......
我该怎么做?
其他信息:
就像你说的那样...... 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.150, -0.440)
我想得到像-0.139,-0.140,-0.121,......这样的数字
答案 0 :(得分:2)
Random's 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
为result
1}}介于0.0和1.0之间a
介于b
和{{1}}之间。
如果您希望数字接近某个数字(比如0.44)但不超过0.15,那么您需要将结果映射到(0.44 - 0.15,0.44 + 0.15)区间。
答案 1 :(得分:0)
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
最接近的不是明确的定义