Вверх ↑
Этот топик читают: Гость
Ответов: 875
Рейтинг: 101
#1: 2020-12-04 02:31:52 ЛС | профиль | цитата
Вот вам задачку на досуге.

Мне нужен предсказуемый генератор чисел, количество итераций не известно, но всегда известно какое число будет.
обычный рандом работает как надо каждый раз после запуска программы выдает те же значения, но если вызвать его 2-ой или 3-ий раз то значения не совпадают, на примерной схеме мне нужно что бы в каждом listbox были одинаковые значения.



Add(MainForm,2953706,42,35)
{
Width=590
}
Add(Random,11761833,336,84)
{
Max=255
link(onRandom,671532:doAdd,[])
}
Add(Random,16477768,336,189)
{
Max=255
link(onRandom,3132195:doAdd,[])
}
Add(ListBox,671532,434,84)
{
Left=100
Top=30
Width=95
Height=235
}
Add(ListBox,3132195,434,189)
{
Left=200
Top=30
Width=90
Height=235
}
Add(Button,16637802,42,77)
{
Left=15
Top=100
Height=55
link(onClick,3520621:doEvent1,[])
}
Add(ListBox,16317752,434,287)
{
Left=295
Top=30
Width=90
Height=235
}
Add(ListBox,15549370,434,399)
{
Left=390
Top=30
Width=90
Height=235
}
Add(ListBox,2261830,434,497)
{
Left=485
Top=30
Width=90
Height=235
}
Add(Random,8006678,336,287)
{
Max=255
link(onRandom,16317752:doAdd,[])
}
Add(Random,9035662,336,399)
{
Max=255
link(onRandom,15549370:doAdd,[])
}
Add(Random,456152,336,497)
{
Max=255
link(onRandom,2261830:doAdd,[])
}
Add(Edit,12006883,273,35)
{
Left=100
Top=5
Width=95
Text="20"
}
Add(For,12532950,266,84)
{
link(onEvent,11761833:doRandom,[])
link(End,12006883:Text,[])
}
Add(Edit,3917225,273,140)
{
Left=200
Top=5
Width=90
Text="160"
}
Add(For,9617449,266,189)
{
link(onEvent,16477768:doRandom,[])
link(End,3917225:Text,[])
}
Add(Edit,5946527,273,238)
{
Left=295
Top=5
Width=90
Text="70"
}
Add(For,10875568,266,287)
{
link(onEvent,8006678:doRandom,[])
link(End,5946527:Text,[])
}
Add(Edit,3110873,273,350)
{
Left=385
Top=5
Width=95
Text="5"
}
Add(For,1815500,266,399)
{
link(onEvent,9035662:doRandom,[])
link(End,3110873:Text,[])
}
Add(Edit,10656320,273,448)
{
Left=485
Top=5
Width=90
Text="600"
}
Add(For,12226564,266,497)
{
link(onEvent,456152:doRandom,[])
link(End,10656320:Text,[])
}
Add(Hub,3520621,98,77)
{
OutCount=6
link(onEvent1,8821856:doEvent1,[(147,83)(147,20)])
link(onEvent2,12532950:doFor,[])
link(onEvent3,9617449:doFor,[(221,97)(221,195)])
link(onEvent4,10875568:doFor,[(213,104)(213,293)])
link(onEvent5,1815500:doFor,[(207,111)(207,405)])
link(onEvent6,12226564:doFor,[(199,118)(199,503)])
}
Add(Hub,8821856,161,14)
{
OutCount=5
link(onEvent1,1932624:In,[])
link(onEvent2,9975457:In,[])
link(onEvent3,15264687:In,[])
link(onEvent4,6642361:In,[])
link(onEvent5,3441652:In,[])
}
Add(LineBreak,10479587,385,98)
{
link(Out,671532:doClear,[(425,104)(425,97)])
Primary=[1932624,-196,-84]
}
Add(LineBreak,12390187,385,203)
{
link(Out,3132195:doClear,[(425,209)(425,202)])
Primary=[9975457,-196,-182]
}
Add(LineBreak,12188424,385,301)
{
link(Out,16317752:doClear,[(425,307)(425,300)])
Primary=[15264687,-196,-273]
}
Add(LineBreak,12200862,385,413)
{
link(Out,15549370:doClear,[(425,419)(425,412)])
Primary=[6642361,-196,-378]
}
Add(LineBreak,2103520,385,511)
{
link(Out,2261830:doClear,[(425,517)(425,510)])
Primary=[3441652,-196,-469]
}
карма: 1

0
Ответов: 783
Рейтинг: 168
#2: 2020-12-04 07:58:14 ЛС | профиль | цитата
flud писал(а):
Мне нужен предсказуемый генератор чисел

Add(MainForm,6702281,98,98)
{
Width=590
}
Add(Random,11761833,504,154)
{
Max=255
link(onRandom,3113304:doEvent,[])
}
Add(Random,16477768,476,252)
{
Max=255
}
Add(ListBox,671532,693,154)
{
Left=100
Top=30
Width=95
Height=235
}
Add(ListBox,3132195,693,259)
{
Left=200
Top=30
Width=90
Height=235
}
Add(Button,16637802,98,140)
{
Left=15
Top=100
Height=55
link(onClick,3520621:doEvent1,[])
}
Add(ListBox,16317752,693,357)
{
Left=295
Top=30
Width=90
Height=235
}
Add(ListBox,15549370,693,469)
{
Left=390
Top=30
Width=90
Height=235
}
Add(ListBox,2261830,693,567)
{
Left=485
Top=30
Width=90
Height=235
}
Add(Random,8006678,476,350)
{
Max=255
}
Add(Random,9035662,476,462)
{
Max=255
}
Add(Random,456152,476,560)
{
Max=255
}
Add(Edit,12006883,301,63)
{
Left=100
Top=5
Width=95
Text="20"
}
Add(For,12532950,217,147)
{
End=4
link(onEvent,8433569:doIndex,[])
}
Add(Edit,3917225,350,63)
{
Left=200
Top=5
Width=90
Text="160"
}
Add(Edit,5946527,399,63)
{
Left=295
Top=5
Width=90
Text="70"
}
Add(Edit,3110873,441,63)
{
Left=385
Top=5
Width=95
Text="5"
}
Add(Edit,10656320,483,63)
{
Left=485
Top=5
Width=90
Text="600"
}
Add(Hub,3520621,154,140)
{
link(onEvent1,8821856:doEvent1,[(203,146)(203,83)])
link(onEvent2,12532950:doFor,[])
}
Add(Hub,8821856,217,77)
{
OutCount=5
link(onEvent1,1932624:In,[])
link(onEvent2,9975457:In,[])
link(onEvent3,15264687:In,[])
link(onEvent4,6642361:In,[])
link(onEvent5,3441652:In,[])
}
Add(LineBreak,14637132,644,168)
{
link(Out,671532:doClear,[(684,174)(684,167)])
Primary=[1932624,-399,-91]
}
Add(LineBreak,15417745,644,273)
{
link(Out,3132195:doClear,[(684,279)(684,272)])
Primary=[9975457,-399,-189]
}
Add(LineBreak,4413633,644,371)
{
link(Out,16317752:doClear,[(684,377)(684,370)])
Primary=[15264687,-399,-280]
}
Add(LineBreak,12044501,644,483)
{
link(Out,15549370:doClear,[(684,489)(684,482)])
Primary=[6642361,-399,-385]
}
Add(LineBreak,13399531,644,581)
{
link(Out,2261830:doClear,[(684,587)(684,580)])
Primary=[3441652,-399,-476]
}
Add(IndexToChanel,3113304,567,154)
{
Count=5
Point(Index)
link(onEvent1,671532:doAdd,[])
link(onEvent2,3132195:doAdd,[(634,167)(634,265)])
link(onEvent3,16317752:doAdd,[(627,174)(627,363)])
link(onEvent4,15549370:doAdd,[(620,181)(620,475)])
link(onEvent5,2261830:doAdd,[(613,188)(613,573)])
link(Index,12532950:Position,[(573,145)(559,145)(559,194)(223,194)])
}
Add(GetIndexData,8433569,301,147)
{
Count=5
link(onIndex,16240018:doEvent1,[])
link(Data1,12006883:Text,[])
link(Data2,3917225:Text,[(314,103)(356,103)])
link(Data3,5946527:Text,[(321,110)(405,110)])
link(Data4,3110873:Text,[(328,117)(447,117)])
link(Data5,10656320:Text,[(335,124)(489,124)])
}
Add(For,13296447,399,154)
{
link(onEvent,11761833:doRandom,[])
link(End,8433569:Var,[(412,145)(391,145)(391,187)(307,187)])
}
Add(Hub,16240018,364,147)
{
link(onEvent1,13077211:doData,[])
link(onEvent2,13296447:doFor,[])
}
Add(DoData,13077211,448,147)
{
Data=Integer(1234)
link(onEventData,11761833:doRandSeed,[(487,153)(487,174)])
}


Редактировалось 2 раз(а), последний 2020-12-04 08:05:02
карма: 15

0
Ответов: 875
Рейтинг: 101
#3: 2020-12-04 08:11:19 ЛС | профиль | цитата
но если вызвать его 2-ой или 3-ий раз то значения не совпадают

карма: 1

0
Ответов: 783
Рейтинг: 168
#4: 2020-12-04 08:21:47 ЛС | профиль | цитата
flud, сколько раз программу не запускаю и сколько раз на кнопку не нажимаю всё равно одно и тоже выдаёт.
Снимок.PNG
Снимок.PNG

Редактировалось 1 раз(а), последний 2020-12-04 08:24:56
карма: 15

0
Ответов: 875
Рейтинг: 101
#5: 2020-12-04 09:22:30 ЛС | профиль | цитата
вот оно что, у меня просто 64 битный FPC компилятор, проверил на стандартном, всё так как надо.

проверь этот IC
Add(InlineCode,16037272,469,140)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|3:var|19: Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|5:begin|36: _hi_OnEvent(onResult, Random(255));|4:end;|0:|0:|0:|0:|4:end.|
}


Редактировалось 1 раз(а), последний 2020-12-04 09:45:32
карма: 1

0
Ответов: 783
Рейтинг: 168
#6: 2020-12-04 09:52:33 ЛС | профиль | цитата
flud писал(а):
проверь этот IC

Снимок.PNG

--- Добавлено в 2020-12-04 10:26:51

flud, можешь сделать свой "генератор" любым возможным способом.

Add(MainForm,6702281,91,70)
{
Width=590
}
Add(ListBox,671532,735,119)
{
Left=100
Top=30
Width=95
Height=235
}
Add(ListBox,3132195,735,224)
{
Left=200
Top=30
Width=90
Height=235
}
Add(Button,16637802,91,112)
{
Left=15
Top=100
Height=55
link(onClick,3520621:doEvent1,[])
}
Add(ListBox,16317752,735,322)
{
Left=295
Top=30
Width=90
Height=235
}
Add(ListBox,15549370,735,434)
{
Left=390
Top=30
Width=90
Height=235
}
Add(ListBox,2261830,735,532)
{
Left=485
Top=30
Width=90
Height=235
}
Add(Edit,12006883,294,35)
{
Left=100
Top=5
Width=95
Text="20"
}
Add(For,12532950,224,119)
{
End=4
link(onEvent,8433569:doIndex,[])
}
Add(Edit,3917225,343,35)
{
Left=200
Top=5
Width=90
Text="160"
}
Add(Edit,5946527,392,35)
{
Left=295
Top=5
Width=90
Text="70"
}
Add(Edit,3110873,434,35)
{
Left=385
Top=5
Width=95
Text="5"
}
Add(Edit,10656320,476,35)
{
Left=485
Top=5
Width=90
Text="600"
}
Add(Hub,3520621,147,112)
{
link(onEvent1,8821856:doEvent1,[(196,118)(196,55)])
link(onEvent2,12532950:doFor,[])
}
Add(Hub,8821856,210,49)
{
OutCount=5
link(onEvent1,1932624:In,[])
link(onEvent2,9975457:In,[])
link(onEvent3,15264687:In,[])
link(onEvent4,6642361:In,[])
link(onEvent5,3441652:In,[])
}
Add(LineBreak,6200067,686,133)
{
link(Out,671532:doClear,[(726,139)(726,132)])
Primary=[1932624,-448,-84]
}
Add(LineBreak,8040735,686,238)
{
link(Out,3132195:doClear,[(726,244)(726,237)])
Primary=[9975457,-448,-182]
}
Add(LineBreak,14033007,686,336)
{
link(Out,16317752:doClear,[(726,342)(726,335)])
Primary=[15264687,-448,-273]
}
Add(LineBreak,3104981,686,448)
{
link(Out,15549370:doClear,[(726,454)(726,447)])
Primary=[6642361,-448,-378]
}
Add(LineBreak,9917941,686,546)
{
link(Out,2261830:doClear,[(726,552)(726,545)])
Primary=[3441652,-448,-469]
}
Add(IndexToChanel,3113304,609,119)
{
Count=5
Point(Index)
link(onEvent1,671532:doAdd,[])
link(onEvent2,3132195:doAdd,[(676,132)(676,230)])
link(onEvent3,16317752:doAdd,[(669,139)(669,328)])
link(onEvent4,15549370:doAdd,[(662,146)(662,440)])
link(onEvent5,2261830:doAdd,[(655,153)(655,538)])
link(Index,12532950:Position,[(615,110)(601,110)(601,166)(230,166)])
}
Add(GetIndexData,8433569,294,119)
{
Count=5
link(onIndex,13296447:doFor,[])
link(Data1,12006883:Text,[])
link(Data2,3917225:Text,[(307,75)(349,75)])
link(Data3,5946527:Text,[(314,82)(398,82)])
link(Data4,3110873:Text,[(321,89)(440,89)])
link(Data5,10656320:Text,[(328,96)(482,96)])
}
Add(For,13296447,392,119)
{
link(onEvent,4029267:doHashsum,[])
link(End,8433569:Var,[(405,110)(384,110)(384,159)(300,159)])
}
Add(Hashsum,4029267,448,119)
{
link(onResult,5059824:doCopy,[])
}
Add(ConvertorEx,2924101,553,119)
{
Mode=5
link(onResult,3113304:doEvent,[])
}
Add(Copy,5059824,504,119)
{
Position=1
Count=2
Direction=1
link(onCopy,2924101:doConvert,[])
}

Редактировалось 1 раз(а), последний 2020-12-04 10:26:51
карма: 15

0
Ответов: 8921
Рейтинг: 823
#7: 2020-12-04 12:19:21 ЛС | профиль | цитата
Коллеги, о чём вы
У компонента Rnd специально для вас точка для предустановки генератора doRandSeed Да и десяток Rnd не обязателен
Пример


Add(MainForm,14632992,252,70)
{
Width=590
Height=340
}
Add(Random,11761833,462,189)
{
Max=255
Point(doRandSeed)
link(onRandom,8253213:doAdd,[])
}
Add(ListBox,671532,553,231)
{
Left=100
Top=30
Width=95
Height=235
}
Add(ListBox,3132195,560,238)
{
Left=200
Top=30
Width=90
Height=235
}
Add(Button,16637802,252,119)
{
Left=15
Top=100
Height=55
link(onClick,5937647:doFor,[])
}
Add(ListBox,16317752,567,245)
{
Left=295
Top=30
Width=90
Height=235
}
Add(ListBox,15549370,574,252)
{
Left=390
Top=30
Width=90
Height=235
}
Add(ListBox,2261830,581,259)
{
Left=485
Top=30
Width=90
Height=235
}
Add(Edit,12006883,371,70)
{
Left=100
Top=5
Width=95
Text="20"
}
Add(For,12532950,364,189)
{
link(onEvent,11761833:doRandom,[])
link(onStop,15947318:doEvent,[(403,202)(403,258)])
link(End,12535551:Var,[])
}
Add(Edit,3917225,378,70)
{
Left=200
Top=5
Width=90
Text="160"
}
Add(Edit,5946527,385,70)
{
Left=295
Top=5
Width=90
Text="70"
}
Add(Edit,3110873,392,70)
{
Left=385
Top=5
Width=95
Text="5"
}
Add(Edit,10656320,399,70)
{
Left=485
Top=5
Width=90
Text="600"
}
Add(Edit,13428692,441,70)
{
Left=105
Top=270
Width=90
Text="123654"
DataType=2
}
Add(Edit,896216,448,70)
{
Left=205
Top=270
Width=85
Text="234567"
DataType=2
}
Add(Edit,9237807,455,70)
{
Left=295
Top=270
Width=90
Text="345678"
DataType=2
}
Add(Edit,11639603,462,70)
{
Left=390
Top=270
Width=90
Text="456789"
DataType=2
}
Add(Edit,7165676,469,70)
{
Left=485
Top=270
Width=85
Text="678912"
DataType=2
}
Add(DoData,6573104,420,203)
{
link(onEventData,11761833:doRandSeed,[])
link(Data,16061967:Var,[(426,166)(447,166)])
}
Add(Hub,15080774,329,168)
{
OutCount=3
link(onEvent1,8253213:doClear,[(501,174)(501,202)])
link(onEvent2,6573104:doData,[(410,181)(410,209)])
link(onEvent3,12532950:doFor,[(354,188)(354,195)])
}
Add(For,5937647,308,119)
{
End=4
link(onEvent,12535551:doIndex,[])
}
Add(GetIndexData,12535551,371,119)
{
Count=5
link(onIndex,16061967:doIndex,[])
link(Data1,12006883:Text,[])
link(Data2,3917225:Text,[])
link(Data3,5946527:Text,[])
link(Data4,3110873:Text,[])
link(Data5,10656320:Text,[])
}
Add(GetIndexData,16061967,441,119)
{
Count=5
link(onIndex,15080774:doEvent1,[(487,125)(487,160)(319,160)(319,174)])
link(Data1,13428692:Text,[])
link(Data2,896216:Text,[])
link(Data3,9237807:Text,[])
link(Data4,11639603:Text,[])
link(Data5,7165676:Text,[])
}
Add(IndexToChanel,15947318,504,252)
{
Count=5
Point(Index)
Point(Data)
link(onEvent1,671532:doText,[])
link(onEvent2,3132195:doText,[])
link(onEvent3,16317752:doText,[])
link(onEvent4,15549370:doText,[])
link(onEvent5,2261830:doText,[])
link(Index,5937647:Position,[(510,243)(314,243)])
link(Data,8253213:Text,[])
}
Add(StrList,8253213,511,189)
{
}

карма: 19

0
Ответов: 783
Рейтинг: 168
#8: 2020-12-04 12:25:42 ЛС | профиль | цитата
Леонид, я этот способ предложил flud https://forum.hiasm.com/post/308077, но у него этот метод не работает, возможно, из за компилятора.

Редактировалось 2 раз(а), последний 2020-12-04 12:30:26
карма: 15

0
Ответов: 8921
Рейтинг: 823
#9: 2020-12-04 14:14:10 ЛС | профиль | цитата
И на FPC, и на Delphi работает одинаково Установить оба FPC и 32, и 64.

Редактировалось 1 раз(а), последний 2020-12-04 14:14:25
карма: 19

0
Ответов: 875
Рейтинг: 101
#10: 2020-12-04 16:27:56 ЛС | профиль | цитата
выспался и всё равно не понимаю что не так у меня
https://webm.red/view/sB84.webm


Gunta спасибо такой генератор годиться

Редактировалось 1 раз(а), последний 2020-12-04 16:33:51
карма: 1

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)