NextDouble 的随机数 (C#)
Random Number with NextDouble (C#)
我正在编写一个感知器,确实需要获取从正常的 NextDouble (0, 1) 到 (-0.5, 0.5) 的范围。问题是,我正在使用一个数组,但不确定是否可行。希望这些信息足够了。
Random rdm = new Random();
double[] weights = {rdm.NextDouble(), rdm.NextDouble(), rdm.NextDouble()};
只需从您的随机数中减去 0.5:
double[] weights = {
rdm.NextDouble() - 0.5,
rdm.NextDouble() - 0.5,
rdm.NextDouble() - 0.5
};
如果你只需要一个十进制值(我根据我在维基百科上看到的内容的疯狂猜测)并且包括两个限制,我不会使用双精度值而只使用一个十进制值然后进行数学计算:
(rdm.Next(11) - 5) / 10M;
这将 return 从 -0.5 到 0.5 的 11 个不同可能值中的任何一个。
或者您可以采用双向但四舍五入的方式,这样您实际上可以达到上限 (0.5):
Math.Round(rdm.NextDouble() - 0.5, 1);
这种方式可能比我的第一个建议慢一点。
我正在编写一个感知器,确实需要获取从正常的 NextDouble (0, 1) 到 (-0.5, 0.5) 的范围。问题是,我正在使用一个数组,但不确定是否可行。希望这些信息足够了。
Random rdm = new Random();
double[] weights = {rdm.NextDouble(), rdm.NextDouble(), rdm.NextDouble()};
只需从您的随机数中减去 0.5:
double[] weights = {
rdm.NextDouble() - 0.5,
rdm.NextDouble() - 0.5,
rdm.NextDouble() - 0.5
};
如果你只需要一个十进制值(我根据我在维基百科上看到的内容的疯狂猜测)并且包括两个限制,我不会使用双精度值而只使用一个十进制值然后进行数学计算:
(rdm.Next(11) - 5) / 10M;
这将 return 从 -0.5 到 0.5 的 11 个不同可能值中的任何一个。
或者您可以采用双向但四舍五入的方式,这样您实际上可以达到上限 (0.5):
Math.Round(rdm.NextDouble() - 0.5, 1);
这种方式可能比我的第一个建议慢一点。