Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2015, 12:06   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию Случайное значение из списка

Подскажите как показать случайное значение из списка без повтора
Есть список 1(а),2(а),3(а),4(а),5(а),6(а),7(а), 8(а),9(а),10(а)
mitiay вне форума Ответить с цитированием
Старый 17.10.2015, 12:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чет я реально вопроса не понял... Что за список? Где расположен? Что значит "без повтора"? Тебе как в WinAMP-е нужно рандомно значения перемешать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2015, 12:14   #3
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

нужно сделать так
Из этих значений нужно показать одно случайное," без повтора" - это чтоб одно и тоже значение не выходило повторно пока не сбросишь счет
1(а),2(а),3(а),4(а),5(а),6(а),7(а), 8(а),9(а),10(а)
1(b),2(b),3(b),4(b),5(b),6(b),7(b), 8(b),9(b),10(b)
допустим Showmessage
Записывать их обсалютно без разницы куда

Последний раз редактировалось mitiay; 17.10.2015 в 12:20.
mitiay вне форума Ответить с цитированием
Старый 17.10.2015, 12:18   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделай массив со ссылками на элементы списка. Рандомно выбери элемент из N элементов и удали его из массива, например сдвигом хвоста массива. Рандомно выбери из N-1 элементов и т.д. Если список не нужно сохранять, то можно напрямую из него брать и удалять

Цитата:
Из этих значений нужно показать одно случайное
А куда делось слово без повторов? Я, блин, старался расписывал

Опять появилось, короче хрен поймешь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 17.10.2015 в 12:21.
Аватар вне форума Ответить с цитированием
Старый 17.10.2015, 12:32   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
короче хрен поймешь
Та да...
Похоже что ТС требует это:
Код:
List.Append('1(а)');
List.Append('2(а)');
...
List.Append('10(а)');
...

i:=random(List.Count);
...:=List[i]; List.Delete(i);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2015, 12:37   #6
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Смотри, обьясню по подробнее )))
Есть значения:
1(а),2(а),3(а),4(а),5(а),6(а),7(а), 8(а),9(а),10(а)
1(b),2(b),3(b),4(b),5(b),6(b),7(b), 8(b),9(b),10(b)
Нажимаю на кнопку выходит сообщение с рандомным значением из списка "6(b)" тем самым 6(b) удаляется из списка
нажимаю на кнопку выходит сообщение с рандомным значением из списка "(1а) " тем самым 1а удаляется из списка

нажимаю на кнопку "Востановить" 1а и 6b возращаются в общий список

Код:
var  i:integer;
    s:string;
begin
for i := 0 to (ListBox1.Items.Count - 1) do begin
s:=Random(ListBox1.Items[i]);
showmessage(s);
что не так?

Последний раз редактировалось Stilet; 17.10.2015 в 15:15.
mitiay вне форума Ответить с цитированием
Старый 17.10.2015, 15:16   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что не так?
Все не так. Сравни с моим примером: random() принимает число, а не класс TStrings.
И возвращает число, а не строку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2015, 15:38   #8
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Все не так. Сравни с моим примером: random() принимает число, а не класс TStrings.
И возвращает число, а не строку.
Код:
var s:string;
    i:integer;
begin
s:=ListBox1.Items[random(ListBox1.Items.Count)];
showmessage('значение:'+s +'номер строки');
Со значением разобрался а вот с номером не могу(((помогите плз

Последний раз редактировалось Stilet; 17.10.2015 в 16:58.
mitiay вне форума Ответить с цитированием
Старый 17.10.2015, 16:59   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Код выделяй спецтегом по кнопке # в панели инструментов поста
Во-вторых: Каким номером? Я ниче не пойму...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.10.2015, 17:10   #10
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

mitiay, вот код:
Код:
var s:string;
    i:integer;
begin
i:=random(ListBox1.Items.Count);
s:=ListBox1.Items[i];
showmessage('значение: '+s +' Номер строки: '+IntToStr(i));
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Случайное значение из списка olya-rud Паскаль, Turbo Pascal, PascalABC.NET 23 16.10.2015 15:05
Вернуть случайное текстовое значение из списка КакоеИмяПридумать? Microsoft Office Excel 2 04.01.2015 13:06
Паскаль. Случайное заполнение списка. Silverstone Помощь студентам 3 25.05.2012 11:21
Возведение в степень и случайное значение переменной БалаШагаЛ Общие вопросы C/C++ 14 19.03.2011 19:03
Случайное разбиение списка на множесво маленьких списков eXa Общие вопросы Delphi 5 15.08.2007 09:23