Преобразование некоторого классического кода 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# имитирует правильную реализацию, а не неправильную.