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);

这种方式可能比我的第一个建议慢一点。