Вверх ↑
Этот топик читают: Гость
Ответов: 4641
Рейтинг: 334
#61: 2009-12-20 11:54:00 ЛС | профиль | цитата
Ravilr писал(а):
Перетасовку карт сделать на новом методе

так что ли?
code_16051.txt
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_16051.txt [914B] [226]
Разработчик
Ответов: 26170
Рейтинг: 2127
#62: 2009-12-20 11:59:12 ЛС | профиль | цитата
Ravilr писал(а):
так что ли?

У тебя перетасовка строк получилась, а не карт.

Вот так надо. Rundomaze применять не надо, он там встроен

code_16052.txt

Подумай, как сделать перетасовку нечисловых строк с применением нового метода
карма: 22

0
файлы: 1code_16052.txt [441B] [254]
Ответов: 16884
Рейтинг: 1239
#63: 2009-12-20 12:03:07 ЛС | профиль | цитата
nesco писал(а):
Так работает метод IndexOf
Прийдется применять ArrayEnum с парой If_Else
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5227
Рейтинг: 587
#64: 2009-12-20 13:21:41 ЛС | профиль | цитата
Tad писал(а):
столько и получишь один и тот же ряд цифр
Ну да, в таком режиме я не проверял.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 16884
Рейтинг: 1239
#65: 2009-12-20 15:16:03 ЛС | профиль | цитата
andrestudio, просто в скрипте, перед

Do While Dict.Count <> i
вставить оператор Randomize
Тогда один и тот-же ряд теоретически будет выпадать раз каждые сутки при условии запуска программы в одно и тоже время с точностью до миллисекунды (разница в 0 миллисекунд)


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:andrestudio
Ответов: 4641
Рейтинг: 334
#66: 2009-12-20 15:43:10 ЛС | профиль | цитата
nesco, а так перетасовка?

code_16059.txt
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_16059.txt [1KB] [196]
Ответов: 16884
Рейтинг: 1239
#67: 2009-12-20 15:50:41 ЛС | профиль | цитата

------------ Дoбавленo в 16.02:
Ravilr, не спеши.

nesco, объясни мне пож. : Зачем эти танцы с бубном вокруг системного времени, переводом времени в миллисекунды? Да еще и воткнуть этот бубен в цикл !
Почему не использовать в кодах одно слово - Randomize и не в цикле, а перед ним ?

#pas
procedure THIRandom._work_doRandomWithoutRepeats;
var
RndList: PStrListEx;
i, rndidx: integer;
T: TSystemTime;
begin
RndList := NewStrListEx;
for i := Round(_prop_Min) to Round(_prop_Max) do
RndList.AddObject(', i);
Randomize;
for i := 0 to RndList.Count - 1 do
begin
rndidx := Round(Random * RndList.Count - 0.5);
FRnd := RndList.Objects[rndidx];
RndList.Delete(rndidx);
_hi_onEvent(_event_onRandom, Round(FRnd));
end;
RndList.free;
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#68: 2009-12-20 17:22:57 ЛС | профиль | цитата
Tad писал(а):
Почему не использовать в кодах одно слово - Randomize

Я повторил вашу схему на HiAsm'e, там в цикле у вас стоит Randomize. Ну, можно и убрать, проблем-то нет
------------ Дoбавленo в 17.29:
Tad, а вот integer ты зря убрал, на выходе-то не целый тип тогда будет, а дробный
------------ Дoбавленo в 17.34:
Ravilr, пример для перетасовки чисел лучше сделат так



Add(MainForm,11182862,252,231)
{
Left=20
Top=105
Width=154
Height=251
Caption="Пример использования Random"
}
Add(Random,5447273,329,287)
{
Max=9
Point(doRandomWithoutRepeats)
link(onRandom,5323340:doAdd,[(372,293)(372,272)])
}
Add(Button,12351317,252,273)
{
Left=10
Top=10
link(onClick,2706201:doEvent1,[])
}
Add(Memo,5323340,392,266)
{
Left=10
Top=40
Width=110
Height=160
}
Add(Hub,2706201,294,273)
{
link(onEvent1,5323340:doClear,[])
link(onEvent2,5447273:doRandomWithoutRepeats,[(318,286)(318,307)])
}

Для строк, что-то не совсем правильно работает

------------ Дoбавленo в 17.38:
Вот так для строк неплохо работает



Add(MainForm,11182862,280,378)
{
Left=20
Top=105
Width=154
Height=251
Caption="Пример использования Random"
}
Add(Random,5447273,280,329)
{
Max=9
Point(doRandomWithoutRepeats)
link(onRandom,879654:doEvent1,[])
}
Add(StrList,14407297,371,357)
{
Strings=#5:card0|5:card1|5:card2|5:card3|5:card4|5:card5|5:card6|5:card7|5:card8|5:card9|
Point(doSwap)
Point(Idx1)
link(Idx1,11515204:Random,[])
}
Add(Button,12351317,147,301)
{
Left=10
Top=10
link(onClick,12585925:doEvent1,[])
}
Add(Memo,5323340,441,434)
{
Left=10
Top=40
Width=110
Height=160
}
Add(DoData,15419462,371,434)
{
link(onEventData,5323340:doAdd,[])
link(Data,14407297:Text,[])
}
Add(Hub,879654,329,329)
{
link(onEvent1,11515204:doRandom,[(357,335)(357,314)])
link(onEvent2,14407297:doSwap,[(357,342)(357,405)])
}
Add(Hub,12585925,196,301)
{
OutCount=4
link(onEvent1,5323340:doClear,[(425,307)(425,447)])
link(onEvent2,11515204:doRandomize,[(298,314)(298,321)])
link(onEvent3,5447273:doRandomWithoutRepeats,[(240,321)(240,349)])
link(onEvent4,15419462:doData,[(231,328)(231,440)])
}
Add(Random,11515204,385,308)
{
Max=10
Point(doRandomWithoutRepeats)
}

карма: 22

0
Ответов: 8930
Рейтинг: 823
#69: 2009-12-20 18:31:30 ЛС | профиль | цитата
nesco, Tad, вынудили всё таки компонент сделать RndEx для таких случаев (полного перебора в случайном порядке), (правда, не смог установить на Максимальное число формат integer, так и осталось real nesco, может пригладите?)
карма: 19

0
файлы: 1rnd.rar [2.3KB] [235]
Разработчик
Ответов: 26170
Рейтинг: 2127
#70: 2009-12-20 18:42:07 ЛС | профиль | цитата
Леонид, и чем это лучше того, что у нас получилось, к тому же, без ограничения массива
И почему не применить было динамический массив
карма: 22

0
Ответов: 8930
Рейтинг: 823
#71: 2009-12-20 18:50:25 ЛС | профиль | цитата
nesco, да я в *sha вижу Add(Random и решил, что вы схемные решения ищите, ожидая Add(RandomEx
А динамический масиив не знаю, как в Паскале назначить
карма: 19

0
Ответов: 4641
Рейтинг: 334
#72: 2009-12-20 18:52:53 ЛС | профиль | цитата
nesco писал(а):
Вот так для строк неплохо работает


у меня берется первая карта и любая карта из колоды и меняются местами, потом вторая итд

у тебя любая карта в любое место колоды.

т.е все таки перетасовка у меня, а перемешивание у тебя.

Вопрос. Что лучше. ?

Наверно сдвиг колоды + перетасовка + перемешивание
------------ Дoбавленo в 19.12:
а это прямой перебор
т.е берется первая карта и вставляется в любое место колоды, потом опять первая карта в колоде вставляется в любое место.
------------ Дoбавленo в 19.12:

Add(MainForm,11182862,161,49)
{
Left=20
Top=105
Width=154
Height=251
Caption="Пример использования Random"
}
Add(Random,5447273,161,140)
{
Max=9
Point(doRandomWithoutRepeats)
link(onRandom,879654:doEvent1,[])
}
Add(StrList,14407297,322,98)
{
Strings=#5:card0|5:card1|5:card2|5:card3|5:card4|5:card5|5:card6|5:card7|5:card8|5:card9|
Point(doSwap)
Point(Idx1)
Point(Idx2)
Point(doInsert)
Point(onGetString)
Point(doGetString)
link(Str,9732334:Value,[])
link(onGetString,9732334:doValue,[(377,111)(377,29)(310,29)(310,55)])
}
Add(Button,12351317,91,154)
{
Left=10
Top=10
link(onClick,5447273:doRandomWithoutRepeats,[])
}
Add(Memo,5323340,392,189)
{
Left=10
Top=40
Width=110
Height=160
}
Add(DoData,15419462,322,189)
{
link(onEventData,5323340:doAdd,[])
link(Data,14407297:Text,[])
}
Add(Counter,10192878,238,105)
{
Default=-1
link(onNext,4286880:doEvent1,[])
}
Add(Hub,879654,203,140)
{
OutCount=3
link(onEvent1,10192878:doNext,[(227,146)(227,111)])
link(onEvent2,14407297:doInsert,[])
link(onEvent3,15419462:doData,[(269,160)(269,195)])
}
Add(Memory,9732334,322,49)
{
Point(Data)
}
Add(Hub,4286880,287,105)
{
link(onEvent1,14407297:doGetString,[(311,111)(311,160)])
link(onEvent2,14407297:doDelete,[])
}


карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 16884
Рейтинг: 1239
#73: 2009-12-20 19:32:55 ЛС | профиль | цитата
nesco писал(а):
а вот integer ты зря убрал
Просто верил, что
справка по Delphi писал(а):
In Delphi, the Round function rounds a real-type value to an integer-type value.
Да и в Pascal вроде function round(X:real):LongInt;
А у нас по другому?
Не вникал.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8930
Рейтинг: 823
#74: 2009-12-20 20:13:25 ЛС | профиль | цитата
nesco,
nesco писал(а):
Леонид, и чем это лучше того, что у нас получилось, к тому же, без ограничения массива

да ничем, только быстрее в 50 раз
карма: 19

0
файлы: 1rndcomp.png [6.3KB] [247]
Ответов: 5227
Рейтинг: 587
#75: 2009-12-20 20:42:25 ЛС | профиль | цитата
Tad писал(а):
вставить оператор
Randomize


У меня справка видать усечённая , спасибо Tad
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)