当前位置:  开发笔记 > 编程语言 > 正文

你如何在C#中生成一个随机数?

如何解决《你如何在C#中生成一个随机数?》经验,为你挑选了2个好方法。

我想在2个值之间生成一个随机浮点数.在C#中执行此操作的最佳方法是什么?



1> OwenP..:

我唯一要补充的是Eric的回答是一个解释; 我觉得有关代码工作原理的知识比知道代码的工作原理要好.

解释是这样的:假设你想要一个2.5到4.5之间的数字.范围是2.0(4.5 - 2.5). NextDouble只返回介于0和1.0之间的数字,但如果将其乘以该范围,则会得到介于0和范围之间的数字.

所以,这会给我们0.0和2.0之间的随机双打:

rng.NextDouble() * 2.0

但是,我们希望它们介于2.5和4.5之间!我们如何做到这一点?添加最小的数字,2.5:

2.5 + rng.NextDouble() * 2.0

现在,我们得到一个介于0.0和2.0之间的数字; 如果你为这些值中的每一个添加2.5,我们会看到范围现在介于2.5和4.5之间.

起初我认为如果b> a或a> b这很重要,但是如果你以两种方式解决这个问题,只要不弄乱所用变量的顺序,你就会发现它的工作方式相同.我喜欢用更长的变量名来表达它,所以我不会混淆:

double NextDouble(Random rng, double min, double max)
{
    return min + (rng.NextDouble() * (max - min));
}



2> Eric..:
System.Random r = new System.Random();

double rnd( double a, double b )
{
   return a + r.NextDouble()*(b-a);
}

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有