【问题标题】:need a random number generator需要一个随机数生成器
【发布时间】:2019-03-31 01:32:46
【问题描述】:

我需要生成一个介于 -0.5 和 0.5 之间的随机数。

我尝试了用户 Anthony Pegram 的堆栈溢出解决方案。我对其进行了一些修改(我需要在 console.write 行中调用和使用该方法)

public static float nextfloat()
{
     Random random = new Random();
     double val = random.NextDouble();
     val -= 0.5;
     return float.MaxValue * (float)val;
}

通过尝试,我得到超出 -0.5 和 0.5 的数字 我得到了类似的东西

1.7 1.005 等等

【问题讨论】:

  • 为什么要乘以 float.MaxValue?不要这样,你很好。
  • 您绝对不应该在每次需要随机数时分配一个新的随机生成器,它将产生的序列将具有糟糕的统计特性和较差的性能,请考虑接受 Theodor 的回答。

标签: c# random floating-point double


【解决方案1】:

NextDouble 生成 0 到 1 之间的随机数。

private static Random random = new Random();
public static double GetRandomDouble_BetweenMinusHalfPlusHalf()
{
    return random.NextDouble() - 0.5;
}

【讨论】:

    【解决方案2】:
    public class MyRandomGenerator
    {
        private static readonly Random _randomGenerator = new Random();
    
        public static float NextFloat()
        {
            var randomValue = _randomGenerator.NextDouble() - 0.5d;
    
            return (float)randomValue;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 2012-09-02
      • 2011-09-18
      • 2014-01-20
      相关资源
      最近更新 更多