我使用Random()函数以获得随机双精度值。手动启动时效果很好(每次都会很好地生成新的随机值),但是每次由Windows Task Scheduler启动时,它们的值都是相同的。
您知道为什么以及如何解决此问题吗?谢谢
var random = new Random(DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Hour);
double randomStat = new double();
randomStat = Math.Round(GetRandomDouble(random, 5, 250), 1);
static double GetRandomDouble(Random random, double min, double max)
{
return min + (random.NextDouble() * (max - min));
}
答案 0 :(得分:0)
真正的随机性在计算机中实际上是不可能的。相反,我们使用伪随机数生成器。
规则是,给定相同的种子和相同的顺序序列,pseude-RNG将始终返回完全相同的结果。
默认情况下,Random将基于本地DateTime隐式检索种子值。由于这是Unix时间的衍生部分(自X时刻以来的每一个滴答声),因此在极少数情况下(创建实例毫秒级,这是Random出现问题的常见原因),您只会得到重复。
您要做的是根据小时,分钟和秒为它提供种子值。今天的7:00:00 PM与明天的7:00:00相同。