我正在编程感知器,并且确实需要从正常的NextDouble(0,1)到(-0.5,0.5)获得范围。问题是,我正在使用数组,我不确定它是否可行。希望这是足够的信息。
loop.exec();
答案 0 :(得分:2)
只需从随机数中减去0.5:
double[] weights = {
rdm.NextDouble() - 0.5,
rdm.NextDouble() - 0.5,
rdm.NextDouble() - 0.5
};
答案 1 :(得分:1)
如果你只需要一个十进制值(我在维基百科中看到的猜测)并包含两个限制,我就不会使用双精度值而只是一个十进制值,然后进行数学运算:< / p>
(rdm.Next(11) - 5) / 10M;
这将返回从-0.5到0.5的11个不同可能值中的任何一个。
或者你可以采用双向方式进行舍入,因此实际上可以达到上限(0.5):
Math.Round(rdm.NextDouble() - 0.5, 1);
这种方式可能比我的第一个建议慢一点。