почему однозначные случайные числа также генерируются с помощью следующего кода? - PullRequest
0 голосов
/ 31 августа 2009
Private Sub Command1_Click()
Dim x As Integer
For x = 1 To 100
    List1.AddItem (Int(100 * Rnd()))
    If ((Int(100 * Rnd())) >= 10) Then
        Print
    Else

    End If
Next x
End Sub

Ответы [ 4 ]

2 голосов
/ 31 августа 2009

Если вы хотите, чтобы случайные числа варьировались от 10 до 99, вам нужно вычислить их немного по-другому. Есть 90 различных возможных значений, поэтому вы умножаете Rnd () на. Затем вы добавляете минимальное значение, которое составляет 10:

Private Sub Command1_Click()
   Dim x As Integer
   For x = 1 To 100
      List1.AddItem(Int(90 * Rnd()) + 10)
   Next x
End Sub
2 голосов
/ 31 августа 2009

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

1 голос
/ 31 августа 2009

Ошибка, кажется, состоит из двух частей. Сначала вы добавляете в свой список число, которое отличается от того, которое вы сравниваете.

Во-вторых, вы используете Rnd неправильно. См. http://msdn.microsoft.com/en-us/library/f7s023d2(VS.80).aspx для использования, но, в основном, от того, как задан ваш код, вы генерируете число от 0 до 100. Поскольку rnd возвращает один.

То, что происходит, это то, что вы в основном делаете 100 * 0,5, что возвращает вам 50 или 100 * 0,01, что возвращает вам 1.

Если вы хотите, чтобы нижняя граница составляла 100, вы должны сделать это следующим образом.

CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound))

Также, пожалуйста, не забудьте вызвать Randomize () перед использованием Rnd

1 голос
/ 31 августа 2009

Похоже, это потому, что вы генерируете случайное число один раз и добавляете его к List1; затем вы генерируете другое, другое случайное число и условно печатаете его.

Вы не выполняете никакой фильтрации того, какие номера добавляются к List1, и я не совсем уверен, что вы печатаете (я не парень из VB).

...