ASP - функция рандомизации, возвращающая одно и то же значение для двух разных начальных чисел - PullRequest
0 голосов
/ 11 ноября 2008

Итак, я генерирую случайное число, используя Rnd и Randomize, чтобы установить начальное число, которое выглядит следующим образом:

Randomize lSeed
Response.Write Rnd

Я заметил, что он возвращает один и тот же результат для двух значений подряд для lSeed (например, 123, 124), но затем, скажем, 125 вернет новое значение, но 126 будет таким же, как для 125. С чего бы это?

Edit:

Я пробовал что-то подобное

Randomize
Randomize lSeed
Response.write Rnd

И я получаю те же результаты, которые я описал выше.

Ответы [ 5 ]

2 голосов
/ 11 ноября 2008
0 голосов
/ 16 марта 2009

Проблема заключалась в том, что значение для начального числа было слишком большим в другой среде (увеличивающееся значение базы данных). Я закончил тем, что сделал значение Mod 100, чтобы получить что-то полуслучайное, и это было мало, чтобы всегда работать.

0 голосов
/ 11 ноября 2008

Вы также можете выделить текущее время, которое, кажется, работает довольно хорошо

0 голосов
/ 11 ноября 2008
' For ASP, you can create a function like:
Public Function RandRange(ByVal low As Integer, ByVal high As Integer) As Integer
    Randomize()
    Return ((Rnd() * (high - low)) + low)
End Function

' For ASP.NET, you can create a function like:
Private _rnd As System.Random()
Public Function RandRange(ByVal low As Integer, ByVal high As Integer) As Integer
    ' Purpose: Returns Random Integer between low and high, inclusive
    ' Note: _rnd variable must be defined outside of RandRange function
    If _rnd Is Nothing Then
        _rnd = New System.Random()
    End If
    Return _rnd.Next(low, high)
End Function
0 голосов
/ 11 ноября 2008

Вы должны повторно посеять, прежде чем получать случайное значение каждый раз. Я бы посоветовал посеять по таймеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...