Приложение

Григорий Яцкарь
                ПРИЛОЖЕНИЕ
                Программа для Electronic Ipsedixit ( Самсказала )
ПРЕДУПРЕЖДЕНИЕ: Эту программу нельзя использовать успешно,
                не дочитав до конца  и не поняв романа.


  Идея эксперимента  состояла в том,  чтобы найти корреляцию  между  быстродейстием  компютера  и будущим  созданием и заполнением файла,  связанного  с внешним событием ( результатом ставки на рулетке ),  и чтобы это сделать,  нужно было представить  флуктуации  времени операции  на экране компьютера  в простом  легко воспринимаемом  и запоминаемом виде, в целых коротких числах,  поскольку я должен был  посмотреть на экран  и быстро решить,  делать  или не делать  мне ставку на другом компьютере.  С этой целью программа для " EI " ( см. текст её ниже )  производила  заданное количество сложений в основном  цикле,  вызывая  в начале  и  в конце  этого  процесса  TIMER,  и  затем  вычисляла  разницу  двух  его  показаний,  замечая,  равна  она  нулю  или  нет,  и  печатая  n%,  число  циклов  между  теми,  в которых  показания  TIMER'а  изменялись.   (См.  строку  30  программы.  Она  написана  на  языке  Qbasic,  и  %  или !  после  имени  переменной  определяет  её  тип - целая  или  с плавающей точкой. )

  Число  сложений  в основном  цикле  выбиралось  так,  чтобы  n%  равнялось 5  или  6,  и в распределении их  существовали участки  сплошных " пятёрок ",  отражавших периоды,  когда  время операции  возрастало.  Такие  периоды  служили концами попыток  выработки  предсказания,  и  когда  программа  обнаруживала  больше  одиннадцати  последовательных  " пятёрок ", она печатала  nс%,  полное число  изменений показаний  TIMER'а  в попытке ( строка  36 ),  и ожидала  ввода в неё результата предполагаемой  ставки на рулетке.

  Оказалось,  предсказание  попыткой  выигрыша  надёжно, если она  достаточно  длинна ( nc% > 50 )  и предыдущая попытка была короткой  ( nc% < 30 ).  Когда  оба критерия  выполнялись,  я делал  ставку  на  другом  компютере,  и  если  выигрывал,  отдавал программе  команду  создать  новый файл  и поместить в него  30 записей ( см. строки 37 - 72 ),  а затем  закрыть его и сразу же стереть,  а если проигрывал,  то останавливал программу и запускал её сначала,  так как выянил,  что эта процедура,  проводимая после каждой попытки,  улучшает производительность программы.

  И,  как сказано  в основном  тексте,  для получения  надёжных  предсказаний  я должен  был  играть 5-минутными  сессиями с 8-часовыми  паузами  и поддерживать  температуру  в комнате 76,0 - 76,5 градусов  по Фаренгейту  ( 24,4 - 24,7  Цельсия ).


                ПРОГРАММА  ДЛЯ  " EI "

Оператор или метка                Комментарий ( номер строки  и примечание )

CLS                'Line1. Clears the screen
add% = 5550                'Line2. Number of additions in the main cycle
mf% = 11                'Line3. Number of consecutive "fives" to end trial
nf% = 0                'Line4. Counter of consecutive "fives"
nc% = 0                'Line5. Counter of changes of TIMER readings
1                'Line6. Lines 6-16 is the main cycle
t1! = TIMER                'Line7.
y% = 1                'Line8.
2                'Line9.
IF y% < add% THEN GOTO 3 ELSE GOTO 4                'Line10.
3                'Line11.
y% = y% + 1                'Line12.
GOTO 2                'Line13.
4                'Line14.
t2! = TIMER - t1!                'Line15.
IF t2! = 0! THEN GOTO 1                'Line16.
n% = 0                'Line17. Counter of cycles between changes
5                'Line18. Lines 18-29 is the main cycle
n% = n% + 1                'Line19.
t1! = TIMER                'Line20.
y% = 1                'Line21.
6                'Line22.
IF y% < add% THEN GOTO 7 ELSE GOTO 8                'Line23.
7                'Line24.
y% = y% + 1                'Line25.
GOTO 6                'Line26.
8                'Line27.
t2! = TIMER - t1!                'Line28.
IF t2! = 0! THEN GOTO 5                'Line29.
PRINT n%                'Line30. Prints number of cycles between changes
nc% = nc% + 1                'Line31.
IF nf% > mf% AND n% > 5 GOTO 9                'Line32.
IF n% = 5 THEN GOTO 13 ELSE GOTO 12                'Line33.
GOTO 1                'Line34.
9                'Line35.
PRINT "NChanges=";nc%                'Line36. Prints number of changes in trial
INPUT "result";res%                'Line37. Input of the result of the bet
IF res% = 9 THEN GOTO 10 ELSE GOTO 11                'Line38.
10                'Line39.
OPEN "new" FOR RANDOM AS #1                'Line40. Opens new file
PUT #1,1,k%                'Line41.

PUT #1,30,k%                'Line70. Lines 41-70 put 30 records in new file
CLOSE                'Line71.
KILL "new"                'Line72.
11                'Line73.
PRINT "Press Ctrl + Pause to start over"                'Line74.
INPUT "Start over";start%                'Line75.
12                'Line76.
nf% = 0                'Line77. Counter of consecutive "fives"
GOTO 1                'Line78.
13                'Line79.
nf% = nf% + 1                'Line80. Counter of consecutive "fives"
GOTO 1                'Line81.


ПРИМЕЧАНИЕ.  Программа  была модифицирована  для  второй  части  демонстрации, 
в которой  она работала  непрерывно
при температуре 62 градуса по Фаренгейту ( 16,7 Цельсия ).
  Число сложений в основном цикле ( add%,  Line2 ) было изменено на  5461,
и критерии предсказания были:
1) для последней попытки  nc% > 45;
2) для предыдущей попытки  nc% < 19.