Преобразование некоторого классического кода ASP 3.0 в язык C# и ASP.NET

Мне нужно преобразовать код "Classic ASP 3.0" в C# с использованием ASP.NET:

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 он намного выше.

Что мне не хватает?

Что не так с этим кодом?

Заранее спасибо.

1 ответ

Решение

На самом деле максимальное число меньше в коде C#, но вы пишете числа вплотную, чтобы они отображались как одно большое число вместо отдельных чисел.

Random.Next Метод возвращает число, которое по крайней мере так же высоко, как первый параметр, и ниже, чем второй параметр. призвание rnd.Next(1, 9) даст вам число от 1 до 8.

Вы в цикле от нуля и до одного меньше случайного числа. Когда вы пишете эти числа в цикле, между которыми ничего нет, вывод для наибольшего значения будет:

01234567

где оригинальный код вместо этого записал бы это для наибольшего значения:

9

1
2
3
4
5
6
7
8
9

Чтобы получить случайное число между min а также maxдобавить один к max:

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

Цикл от одного вместо нуля, включает конечное значение и помещает что-то между числами:

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

Примечание. Произвольные вычисления в исходном коде на самом деле неверны, поскольку они будут генерировать самое низкое и самое высокое значение наполовину так же часто, как и любое другое число. Правильная реализация будет:

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

Код C# имитирует правильную реализацию, а не неправильную.

Другие вопросы по тегам