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

时间:2012-05-10 07:08:27

标签: c# random vb6 vb6-migration

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

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

但这不对。请帮助我。

由于

5 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:3)

请参阅VB中的代码

  1. 生成随机数。
  2. 将它与75相乘并将其转换为int。
  3. 然后加入75.
  4. 在C#中就像

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

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

    random.Next(50, 100);
    

    只能找到随机数b / w 50和100。

答案 2 :(得分:1)

我认为就像这样

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

修改

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

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

<强> EDIT2

在Deanna的评论之后,代码将

        Random random = new Random();
        Double rdnum = (random.NextDouble() * 75) + 75;

答案 3 :(得分:1)

请注意,如果您需要精确的Rnd功能,可以按照以下步骤操作:
1.在Solution Explorer中,右键单击引用,然后单击&#34; Add Reference ...&#34;
2.In Assemblies - &gt;框架,选中&#34; Microsoft.VisualBasic&#34;的复选框。

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

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

答案 4 :(得分:0)

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

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