【问题标题】:Converting some classic ASP 3.0 code into C# language and ASP.NET将一些经典的 ASP 3.0 代码转换为 C# 语言和 ASP.NET
【发布时间】:2014-10-11 10:14:50
【问题描述】:

我需要使用 ASP.NET 将一些“经典 ASP 3.0”代码转换为 C#:

Randomize()
intUP  = 9
intLow =  1

intRange = intUp - intLow 
intRandom = CInt ((intRange * Rnd()) + intLow)

Response.Write(intRandom & "<br /><br />")

for i = 1 to (num) + intRandom
   Response.Write(intRandom & "<br />")
next

我已经尝试过这段代码:

int count;
Random rnd;

protected void Page_Load(object sender, EventArgs e)
{
    rnd = new Random();
    count = GetRandomInt(1, 9);

                for (int i = 0; i < count; i++)
                {
                   Response.Write(count.ToString());
                }
}


protected int GetRandomInt(int min, int max)
{
    return rnd.Next(min, max);
}

但在 Classic ASP 3.0 中,最大输出为 9,但在 C# 和 ASP.NET 中,要高得多。

我错过了什么?

这段代码有什么问题?

提前谢谢你。

【问题讨论】:

    标签: c# asp.net asp-classic


    【解决方案1】:

    实际上,C# 代码中的最大数字较低,但您将数字背靠背写入,因此它们显示为一个大数字,而不是单独的数字。

    Random.Next 方法返回的数字至少与第一个参数一样高,但低于第二个参数。拨打 rnd.Next(1, 9) 会给您一个介于 1 和 8 之间的数字。

    您从零循环到比随机数小一。当您在循环中写入这些数字时,它们之间没有任何内容,最大值的输出将是:

    01234567
    

    原始代码将改为将其写入最大值:

    9
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    

    要获得minmax 之间的随机数,请将max 加一:

    return rnd.Next(min, max + 1);
    

    从 1 而不是 0 循环,包括结束值,并在数字之间添加一些内容:

    for (int i = 1; i <= count; i++)
    {
      Response.Write(count.ToString() + "<br />");
    }
    

    注意:原始代码中的随机计算实际上是不正确的,因为它生成的最低值和最高值的频率是任何其他数字的一半。正确的实现是:

    intRange = intUp - intLow + 1
    intRandom = Int((intRange * Rnd()) + intLow)
    

    C# 代码模仿的是正确的实现,而不是不正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2017-12-23
      相关资源
      最近更新 更多