0

我在将 VB 代码Int(Rnd() * 75) + 75)转换为 C# 时遇到问题。我试过了

Random random = new Random
random.Next( 75 ) + 75

但它是不对的。请帮我。

谢谢

4

5 回答 5

8

假设这意味着给出一个介于 75(含)和 150(不含)之间的值,我会使用

Random random = new Random();
int value = random.Next(75, 150);

这比首先在 [0, 75) 范围内生成一个数字然后添加 75,IMO 更清楚。

但是请注意,您不应该Random在每次需要随机数时都创建一个新实例。您可能希望每个线程一个实例。我有一篇相当长的文章解释了生成随机数的各种陷阱以及一些解决方法。

于 2012-05-10T07:12:19.280 回答
3

查看您在 VB 中的代码在做什么

  1. 生成一个随机数。
  2. 将其乘以 75 并将其转换为 int。
  3. 然后在其中添加 75。

在 C# 中就像

Random random = new Random();
int v = random.Next() * 75 + 75;

无需转换,因为random.Next()给出了一个整数。此外,您可以通过提供最小值和最大值 b/w 来限制随机数生成,如下所示:

random.Next(50, 100);

它只会找到 b/w 50 和 100 的随机数。

于 2012-05-10T07:10:14.883 回答
1

我认为它是这样的

        Random random = new Random();
        int rdnum = (random.Next() + 1) * 75;

编辑

最后,如果我需要他的随机数,我将使用它(较小的数字为 0-20)

        int rdnum = ((new Random()).Next(0, 20) + 1) * 75;

编辑2

迪安娜评论后,代码将是

        Random random = new Random();
        Double rdnum = (random.NextDouble() * 75) + 75;
于 2012-05-10T07:17:21.077 回答
1

请记住,如果您想要精确的 Rnd 函数,您可以按照以下步骤操作:
1.在解决方案资源管理器中,右键单击引用并单击“添加引用...”
2.在程序集 -> 框架中,选中“Microsoft.视觉基础”

现在你可以像这样使用它:

Microsoft.VisualBasic.VBMath.Rnd();
Microsoft.VisualBasic.VBMath.Randomize();
于 2016-08-04T05:25:10.137 回答
0

请注意,Random Rnd = new Random();在某些情况下应该移出 for...loop:

Random Rnd = new Random(); 
float fRnd = (float)Rnd.NextDouble() * 75f + 75f;
于 2019-05-23T06:56:40.343 回答