2008-07-02 12:26:04 Jumper Помогите сообразить где я ошибся! Ввиде среды использован VBA + Excel Суть задачки: Необходимо каждый раз сгенирировать случайное число от 1 до 4 и записать в диапозон ячеек (так же от 1 до 4) так, чтобы значения в ячейках не повторялись.. То есть результатом должно получится что-то вроде (A1)=3 (A2)=1 (A3)=2 (A4)=4 или (A1)=1 (A2)=3 (A3)=2 (A4)=4 и тд.... Мой код: Sub randme() Randomize For i = 1 To 4 Range("A" & i) = "" Next i '================= For i = 1 To 4 a = CInt((3 * Rnd) + 1) If a <> Range("A" & i) Then Range("A" & i) = a Else Do While a <> Range("A" & i - 1) a = CInt((3 * Rnd) + 1) Loop Range("A" & i) = a End If Next i End Sub | ||
2008-07-02 13:25:16 Jumper
В этом участке кода, сделал одну из ошибок.. Условие будет всегда соблюдатся, потому что индекс i меняется... Далее код не отрабатывает... исправляю... =( мозг на гране кипения... | ||
2008-07-02 15:03:50 Jumper До сих пор не понял как сделать проверка из диапозона... то есть рандом чистла с исключением тех что были... У кого-нибудь есть навык? Сойдет любая среда (C, Delphi, VB, Perl, PHP ... ) главное алгоритм.. | ||
2008-07-04 18:43:51 Still_Alive doit = 1; for (i=0; i<4 || doit; if (!doit) i++) // вот тут вот неуверен, но мысль ясна { a[i] = random(j); doit = 0; for (k=0; k<=i; k++) if (a[i] == a[k]) doit = 1; } | ||