Другие языки программирования и технологии
Надо на VB 6 не повторялись числа которые задумал рандом
Randomize i = Int(Rnd(1) * 30 + 1)переменная i по каждому шелчку на кнопку должно загадываться число от 1 до 30 и оно не должно повторяться как сделать
Доброго времени суток.
Т. е. всего возможно не более 30 щелчков кнопки? Тогда возьмите массив, как предлагается, но заполните его последовательными числами от 1 до 30. Затем в цикле, используя случайные значения в качестве индексов, переставьте элементы массива. Установите индекс массива на первый элемент и по каждому щелчку кнопки просто наращивайте его. В пределах одного прохода массива повторений не будет. Если надо еще раз выполнить программу с новой последовательностью чисел, то просто еще раз выполняете перестановку элементов массива.
Предлагаемый способ свободен от важного недостатка - задержки по времени при получении очередного числа. Предположим, что осталось несколько нажатий, тогда каждое число, выдаваемое рандомом должно проверяться на наличие в массиве и, если оно там есть, должно генерироваться другое и так до тех пор, пока не выпадет такое, которое еще не попадалось. Сколько на это потребуется времени не знает ни кто.
Удачи!
Т. е. всего возможно не более 30 щелчков кнопки? Тогда возьмите массив, как предлагается, но заполните его последовательными числами от 1 до 30. Затем в цикле, используя случайные значения в качестве индексов, переставьте элементы массива. Установите индекс массива на первый элемент и по каждому щелчку кнопки просто наращивайте его. В пределах одного прохода массива повторений не будет. Если надо еще раз выполнить программу с новой последовательностью чисел, то просто еще раз выполняете перестановку элементов массива.
Предлагаемый способ свободен от важного недостатка - задержки по времени при получении очередного числа. Предположим, что осталось несколько нажатий, тогда каждое число, выдаваемое рандомом должно проверяться на наличие в массиве и, если оно там есть, должно генерироваться другое и так до тех пор, пока не выпадет такое, которое еще не попадалось. Сколько на это потребуется времени не знает ни кто.
Удачи!
Задайте массив Dim bila(31) as Boolean
Затем при нахождении первого числа (при i= Int(Rnd(1) * 30 + 1) )
сделайте bila( i )=True
Остальные разы проверяйте if bila( i )=True then goto опять искать else bila( i )=True : Print i
Еще сделайте счетчик нажатий, например в J, и проверяйте:
if J=30 then Print "Больше нет вариантов"
Затем при нахождении первого числа (при i= Int(Rnd(1) * 30 + 1) )
сделайте bila( i )=True
Остальные разы проверяйте if bila( i )=True then goto опять искать else bila( i )=True : Print i
Еще сделайте счетчик нажатий, например в J, и проверяйте:
if J=30 then Print "Больше нет вариантов"
рандом это случайное число. тогда вообще нет смысла его использовать, проще заюзать таймер и выкидывать число от того к примеру какая мили секунда. вариантов дохрена. ток зачем? после 10ти щелчков будут выпадать типа 29, 28, 0,1, 2 короч последовательно если некоторых не будет.
Создайте временный массив для этих чисел и записывайте туда выпадающие случайные числа. Первое - просто так, а последующие - сравнивая числа с имеющимися в массиве, ели такого в массиве нет - значит записать.
Randomize
i = Int(Rnd(1) * 30 + 1)
Randomize i
перестраиваетса рандом на новые тики
Тут вопрос какой должна быть длина етих повторов если больше 30 то сами понимаете.... =)
i = Int(Rnd(1) * 30 + 1)
Randomize i
перестраиваетса рандом на новые тики
Тут вопрос какой должна быть длина етих повторов если больше 30 то сами понимаете.... =)
Похожие вопросы
- А лучше качать VB 6 версии или сразу VB 2010? И воообще, в чем разница то?)))
- C++ Двухмерный массив с случайными не повторяющимися числами.
- как зашить в exe шник VB 6.0 файлы access или excel (чтобы компилировался только один файл)?
- Найдите наибольшее четырехзначное число, которое при делении на любое однозначное число, кроме 1,2и3, дает в остатке 3
- Язык С++. В чем ошибка? Код сам правильно работает, а не выводит те числа которые задумывались.
- Два двузначных числа, записанных одно за другим, образуют четырехзначное число, которое делится на их произведение.
- Pascal. Дана строка, элементы - числа через пробел. Как отсечь числа, которые содержат '0'?
- дается два числа, которые значат сопротивление 2 резисторов. За запросом,как соединенны резисторы, вывести сопротивление
- Четырёхзначное число, кратное 22, произведение чисел которого равно 24. Каким образом это вообще можно вычислить?
- Дан массив Z(10). Вставить число Р между теми числами, которые образуют пару с одинаковыми знаками. Помогите) пжста