这个 VB6 Rnd() 调用的 C# 等效项是什么?

本文关键字:是什么 Rnd VB6 调用 这个 | 更新日期: 2023-09-27 18:33:54

我在将VB

代码Int(Rnd() * 75) + 75)将其提供给C#时遇到了问题。我试过了

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

但这是不对的。请帮助我。

谢谢

这个 VB6 Rnd() 调用的 C# 等效项是什么?

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

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

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

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

查看 VB 中的代码正在执行

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

在 C# 中,它就像

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

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

random.Next(50, 100);

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

我是这样想的

        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;

请记住,如果您想要确切的 Rnd 函数,您可以按照以下步骤操作:
1.In 解决方案资源管理器中,右键单击引用,然后单击"添加引用..."
2.In"程序集"-">框架"中,选中"Microsoft.VisualBasic"复选框

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

Microsoft.VisualBasic.VBMath.Rnd();
Microsoft.VisualBasic.VBMath.Randomize();

请注意,Random Rnd = new Random();应该搬出...在某些情况下循环:

Random Rnd = new Random(); 
float fRnd = (float)Rnd.NextDouble() * 75f + 75f;