|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.11.2008, 18:56 | #1 |
Пользователь
Регистрация: 29.10.2008
Сообщений: 87
|
Случайно но не повторяясь!
Нужно как-то замутить случайную генерацию чисел от 1 до Х но чтобы каждое новое число не было сгенерино раньше!
|
29.11.2008, 19:09 | #2 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,597
|
Создать множество или динамический массив, и добавлять туда каждый раз сгенерированное число, и, соответсвенно, проверять есть ли в списке исключений это число.
на форуме есть решения подобных задач. |
29.11.2008, 19:09 | #3 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Стандартных функций нет, выход:
используем множество (set of) геним число random-ом, заносим его в множество, геним следующее, если оно в множестве, то геним ещё раз. Может и плохая идея, но простая. |
29.11.2008, 19:26 | #4 |
Пользователь
Регистрация: 29.10.2008
Сообщений: 87
|
вот мой код он робит не так как надо пары чисел часто повторяются
первое число gl постоянно от 1 до 9 а второе nv от 1 до "" зависит от первого т.е. если gl=2 то nv=23 for i:=1 to 20 do begin gl:=IntToStr(random(8)+1); //здесь +1 для (1-9) Query1.Close; Query1.SQL.Clear; Query1.SQL.Text:= 'SELECT MAX (Nvopr) FROM Vopros WHERE Glava =('+QuotedStr(gl)+')'; Query1.Open; //запрашиваю до какого числа генерить nv при уже сгенерином gl maxnvopr:= Query1.Fields[0].Value; nv:=IntToStr(random(maxnvopr)+1); end; |
29.11.2008, 19:50 | #5 |
Пользователь
Регистрация: 29.10.2008
Сообщений: 87
|
Я уже думал так сделать, но как мне с парой чисел это проделать не представляю. Первоечисло может повторяться да и второе тоже, при условии, что первое отличается. В общем я в ступоре полном.
|
29.11.2008, 19:52 | #6 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
берем упорядоченный массив 1..X
с помощью генератора перетасовывем его считаем первые N элементов искомыми.
программа — запись алгоритма на языке понятном транслятору
|
29.11.2008, 20:27 | #7 | |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Цитата:
|
|
29.11.2008, 20:55 | #8 |
Пользователь
Регистрация: 29.10.2008
Сообщений: 87
|
что мне надо?
У меня есть таблица, где по главам (9 глав) вбиты разное кол-во вопросов. Я делаю тест и мне нужно набрать 20 разных вопросов. вот и получается что глава может повторятся и номер вопроса тоже т.е. 1-1, 3-5, 3-1, 1-5, 1-1, 7-5.... |
30.11.2008, 19:46 | #9 |
Ra-Ra ?
Форумчанин
Регистрация: 06.03.2008
Сообщений: 286
|
Главам можно присвоить число, допустим 100, 200, 300... А вопросам в главах от 1 до 100, в итоге всегда у вопроса будет уникальное число.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Случайно ни укого нет компонента BUTTON с продвинутым канвом | Altera | Компоненты Delphi | 1 | 04.02.2008 13:46 |