Угадать число из центра
Программа dafindnum.bas угадывает число без ответа меньше или больше
начав из середины списка и сравнивая раздельно нечётные и чётные
Визуально:
123456789
5
5
5 7
3 5 7
3 5 7 9
1 3 5 7 9
1 3 567 9
1 3 567 9
1 3 56789
1 3456789
1 3456789
123456789
Выиграли если угадали до попытки меньше числа
или проиграли если угадали бы с начала быстрее
Эффективно если распределение угадываемых нормальное волнообразное
однако как оценить результат интеграл пока неизвестно
Однако программа экспериментальная не оптимальная
и возможно включить шаг больше 2
n = 19: Randomize Timer: a = Int(Rnd * (n - 1)) + 1 ' dafindnum.bas
start = Int(1 + n / 2) ' https://qb64phoenix.com/forum/showthread.php?tid=900
Print "n= "; n, "a= "; a: Print: s = 0
For i = 0 To 1: For j = 0 To n / 4
t = Int(start + j * 2) + i
If t > n Then 5
s = s + 1: Print s, t
If t = a Then 25
5 t = Int(start - j * 2) + i
If t < 1 Then 15
s = s + 1: Print s, t
If t = a Then 25
15 Next: Next ': Print "NO...": End
25 Print: Print "Step="; s, "Guess="; a, "Max="; n
If s < a Then Print "WIN" Else If s > a Then Print "Lose" Else Print "Draw"
End
Проверка 1000 или дюжины тысяч показала:
Ничья 25% и Проигрыш 37,5% и Выигрыш 37,5%
n = 3*10^4: start = Int(1 + n / 2) ' dafindnum99.bas
w = 0: l = 0: d = 0 ' Win Lose Draw
For a = 1 To n: s = 0
For i = 0 To 1 ' even \ odd
For j = 0 To n / 4
t = Int(start + j * 2) + i ' right
If t > n Then 5
s = s + 1
If t = a Then 25
5 t = Int(start - j * 2) + i ' left
If t < 1 Then 15
s = s + 1
If t = a Then 25
15 Next: Next ': Print "NO..." : End
25 Print "Max="; n, "Guess="; a, "Step="; s,
If s < a Then Print "WIN": w = w + 1 Else If s > a Then Print "Lose": l = l + 1 Else Print "Draw": d = d + 1
Next a: Print: Print "Win= "; w, "Lose= "; l, "Draw= "; d
End
Значит если ничью считать выигрышем тогда эффективно
Guess number from center
Program dafindnum.bas guesses unanswered number less or more
by starting from middle of list and comparing odd and even ones separately
Visual:
123456789
5
5
5 7
3 5 7
3 5 7 9
1 3 5 7 9
1 3 567 9
1 3 567 9
1 3 56789
1 3456789
1 3456789
123456789
Won if you guessed less than number before attempt
or lost if you guessed from beginning faster
It is effective if distribution of guesses is normal undulating
however how to evaluate result of integral is still unknown
However, experimental program is not optimal
and it is possible to include a step greater than 2
Checking 1000 or a dozen thousand showed:
Draw 25% and Lose 37.5% and Win 37.5%
So if a draw is considered a win then algorithm it is effective
GUESS number 2 line C++
c++ угадай число: 2 строка rextester.com/PODQ21675
#include <iostream>
using namespace std; int main() { srand(time(NULL)); int Russia = 0; int n = 1; int num = 0; while (n != num) { if (Russia == 0) { Russia = 2222; num = rand() %9+1; cout << num << " " << n; } else if (Russia != 0) { n = rand() %10 ; cout << num << " " << n; } if (n < num) { cout << " MORE " << endl; } else if (n > num) { cout << " less "<< endl; } else if (n == num) {cout << " da "; } } system("pause"); } // guessnumberc.cpp 9-9-2019 DANILIN Russia
GUESS number 1 line C#
c# угадай число: 1 строка rextester.com/XZGC82928
using System; using System.Text; namespace DANILIN { class Program { static void Main(string[] args) { Random rand = new Random(); int Russia = 0; int n = 1; int num = 0; while (n!=num) { if (Russia == 0) { Russia = 2222; num = rand.Next(10)+1; } else if (Russia != 0) {Console.Write("? "); n = rand.Next(10)+1; Console.Write(" {0} {1} ", num, n); } if (n < num) { Console.WriteLine("MORE"); } else if (n > num) { Console.WriteLine("less"); } else if (n == num) { Console.Write("da"); } } Console.ReadKey(); } } } // guessnumberx.cs 9-9-2019 DANILIN Russia
qb64 qbasic угадай число 1 строка
1 If Russia = 0 Then Russia = 2222: Randomize Timer: num = Int(Rnd * 100) + 1: GoTo 1 Else If Russia <> 0 Then n = Int(Rnd * 100) + 1: If n < num Then Print n; num; "MORE": GoTo 1 Else If n > num Then Print n; num; "less": GoTo 1 Else If n = num Then Print n; num; "da": End Else GoTo 1 ' guessnumberb.bas 9-9-2019 DANILIN Russia
qbasic version of "guess my number game" 1 line
JavaScript js угадай число 1 строка rextester.com/SDEAV70887
var Russia=0; var n, num=0; while (n != num) { if (Russia == 0) { Russia = 2222; num = Math.floor(Math.random()*9+1); } else if (Russia != 0) { n = Math.floor(Math.random()*10); document.write("<br/>" + num + " " + n) } if (n < num) { document.write(" MORE "); } else if (n > num) { document.write(" less "); } else if (n == num) {document.write(" da "); } } // guess number 1-line DANILIN js
qbasic qb64 guessnum.bas input & goto 2019-9-9
1 IF Russia = 0 THEN Russia = 2222: RANDOMIZE TIMER: num = INT(RND * 100) + 1: GOTO 1 ELSE IF Russia <> 0 THEN INPUT n: IF n < num THEN PRINT "MORE": GOTO 1 ELSE IF n > num THEN PRINT "less": GOTO 1 ELSE IF n = num THEN PRINT "da": END ELSE GOTO 1 'DANILIN Russia 9-9-2019 guessnum.bas
c# guessnum.cs input & goto 2019-9-9
using System; using System.Text;namespace GURU { class Program { static void Main(string[] args) { Random rand = new Random(); int Russia = 0; int n = 0; int num = 0; dav: if (Russia == 0) {Russia = 2222; num = rand.Next(100)+1; goto dav; } else if (Russia != 0) {Console.Write("? "); n = Convert.ToInt32(Console.ReadLine());} if (n < num) { Console.WriteLine(«MORE»); goto dav;} else if (n > num) { Console.WriteLine(«less»); goto dav;}else if (n == num) {Console.Write(«da»); Console.ReadKey(); } else goto dav;}}}// DANILIN Russia 9-9-2019 guessnum.cs
Компьютер угадывает число из миллиарда или триллиона
за время логарифмическое
Computer guesses a number out of a billion or a trillion
in logarithmic time
Программа угадывает 1 из миллиарда на qbasic qb64
h1=0: h2=10^9: t=1: f=0: Randomize Timer ' milliardb.bas
human = Int(Rnd*h2) 'human
comp = Int(Rnd*h2) 'comp
While f < 1
Print t; "human ="; human; " comp ="; comp;
If comp < human Then
Print " MORE": a=comp: comp=Int((comp+h2)/2): h1=a
Else If human < comp Then
Print " less": a=comp: comp=Int((h1+comp)/2): h2=a
Else If human=comp Then
Print " win by "; t; " steps": f=1
End If: End If: End If: t = t + 1
Wend: End
Результаты для диапазона от 1 до 100
1 40 11 MORE
2 40 55 less
3 40 33 MORE
4 40 44 less
5 40 38 MORE
6 40 41 less
7 40 39 MORE
8 40 40 win by 8 steps
Программа C# Миллиард
угадывающая 1 из 1'000'OOO'ooo rextester.com/DYVZM84267
за =log(10^9;2) за 30 ходов
using System; // milliardx.cs
namespace DANILIN { class Program
{ static void Main(string[] args)
{ Random rand = new Random();int t=0;
int h2=1234567890; int h1=0; int f=0; int a;
int comp = rand.Next(h2);
int human = rand.Next(h2);
while (f<1)
{ Console.WriteLine();
Console.Write("{0} {1} {2}", t, comp, human);
if(comp < human)
{ Console.Write(" MORE");
a=comp; comp=(comp+h2)/2; h1=a; }
else if(comp > human)
{ Console.Write(" less");
a=comp; comp=(h1+comp)/2; h2=a;}
else {Console.Write(" win by {0} steps", t);f=1;}
t++; }
Console.ReadKey();}}}
Компилирует c# bat
csc.exe /nologo Milliarda.cs
pause
Milliarda.exe
Удобно задаётся в Windows общая переменна
Path
C:\Windows\Microsoft.NET\Framework64\v4.0.30319
JavaScript JS Milliard
rextester.com/PYYQS76244
jdoodle.com/h/2Ul
<!DOCTYPE html>
<title>Milliard JavaScript</title> </head> <body> <noscript>Vkluch JS</noscript>
https://rextester.com/PYYQS76244
<script>
h2=1000000000, h1=0, f=0, t=0, a=0 // Milliard.js
comp = Math.floor(Math.random() * h2)
human = Math.floor(Math.random() * h2)
while (f<1)
{ document.write("<br/>" + t + " " + comp + " " + human)
if(comp < human)
{ document.write(" MORE")
a=comp; comp = Math.floor((comp+h2)/2); h1=a}
else if(comp > human)
{ document.write(" less")
a=comp; comp = Math.floor((h1+comp)/2); h2=a}
else { document.write(" win by " + t + " steps "); f=1}
t++}
</script>
</body> </html>
C++ Milliard rextester.com/QZEGM92902
#include <iostream> // milliardc.cpp
using namespace std;
int main() // rextester.com/QZEGM92902
{ srand(time(NULL));
int h2=1000000000, h1=0, f=0, t=0, a=0;
int comp = rand() % h2;
int human = rand() % h2;
while (f<1)
{ cout<<endl<<t<<" "<<comp<<" "<<human;
if(comp < human)
{ cout << " MORE";
a=comp; comp=(comp+h2)/2; h1=a;}
else if(comp > human)
{ cout << " less";
a=comp; comp=(h1+comp)/2; h2=a;}
else { cout <<" win by "<<t<<" steps "; f=1;}
t++; }system("pause");}
Программа Python Миллиард
угадывающая 1 из 1'000'OOO'ooo rextester.com/GWJFOO4393
import random # milliardp.py
h1=0; h2=10**16;t=0; f=0
c = random.randrange(0,h2) #comp
h = random.randrange(0,h2) #human
while f<1:
print(t,c,h)
if h<c:
print('MORE')
a=h
h=int((h+h2)/2)
h1=a
elif h>c:
print('less')
a=h
h=int((h1+h)/2)
h2=a
else:
print('win by', t, 'steps')
f=1
t+=1
trinket.io/embed/python/adae4501bd
Тасовка
тасуем и следим чтоб номер своё место не занял
пока без контроля стал ли массив биномиально лучше
создаём массив номеров подряд
и за 1 проход переставляем номер порядковый и случайный номер
и если номера переставляемых совпадают: крутящаяся строка мой почерк
проверяем массив и если есть номера на своих местах:
считаем количество и пишем массив как бракованный
помечая совпавшие знаком минус
на экран выводятся первые и крайние номера зато в файл возможно писать всё
как копировать текстовые результаты из окна неизвестно поэтому:
картинка показывает: 9 номеров качественно перетасовали с 6-й попытки
за 0 секунд
далее планирую вычислить стала ли последовательность истинно случайной
и видимо придётся перейти на индексы индексов как ячейки excel
вариант: тасовать чтоб каждый элемент переместился дальше 10% от места
ведь длинные массивы наверняка окажутся без повторов
результат видимый если сохранять на диск или рам диск
между ячейками минимум 10%
и количество повторных перетасовок: до 25% длины массива
контроль результата: открыть в блокноте и поиск 1.0
как отношение менее 10% и искомое отсутствует
значит тасуются элементы на расстоянии друг от друга минимум 10% массива
двоичные возникают если выявить чётность и нечётность
и сравнивая относительного среднего: меньше или больше
a = 100: DIM d(a): x=0: k=0: t$=CHR$(9): RANDOMIZE TIMER 'tas_ten.bas
PRINT ,: FOR i = 1 TO a: d(i)=i: NEXT
FOR i = 1 TO 5: PRINT d(i);: NEXT: PRINT ,
FOR i = a-3 TO a: PRINT d(i);: NEXT: z = TIMER
OPEN "b:/control.txt" FOR OUTPUT AS #1 ' ram disk
WHILE x < 1
v = 0: FOR i = 1 TO a
1 m = INT(RND*a)+1: IF ABS(d(i)-d(m)) < .1*a THEN v = v+1: GOTO 1
PRINT #1, ABS(d(i)-d(m)); t$; d(i); t$; d(m); t$; i; t$; m; t$; d(i)/d(m); t$; d(m)/d(i)
t = d(i): d(i) = d(m): d(m) = t
NEXT
s = 0: FOR i = 1 TO a
IF d(i) = i THEN s = s+1
NEXT
5 k = k+1: PRINT: PRINT s; v,: IF s=0 THEN x = x+1
FOR i = 1 TO 5
IF d(i) = i THEN PRINT -d(i); ELSE PRINT d(i);
NEXT: PRINT ,
FOR i = a-3 TO a
IF d(i) = i THEN PRINT -d(i); ELSE PRINT d(i);
NEXT
WEND: PRINT: PRINT " = "; k, TIMER-z: END
ABS d(i) d(m) i m d(i)/d(m) d(m)/d(i)
41 70 29 91 18 2.413793 0.4142857
59 24 83 92 38 0.2891566 3.458333
14 32 46 93 44 0.6956522 1.4375
23 10 33 94 88 0.3030303 3.3
29 19 48 95 36 0.3958333 2.526316
11 41 30 96 11 1.366667 0.7317073
38 1 39 97 21 2.564103E-02 39
60 26 86 98 55 0.3023256 3.307692
17 4 21 99 58 0.1904762 5.25
26 100 74 100 59 1.351351 0.74
Думаю данная моя давнишняя разработка
поможет синтезировать качественные случайные
Shuffle
shuffle and make sure that number does not take its place
so far without control has array become binomially better
we create an array of numbers in a row
and in 1 pass we rearrange serial number and a random number
and if numbers of rearranged ones match: spinning line is my handwriting
check array and if there are numbers in their places:
we count number and write array as defective
marking matched ones with a minus sign
first and last numbers are displayed on screen but it is possible to write everything to file
how to copy text results from window is unknown therefore:
picture shows: 9 numbers were qualitatively shuffled from 6th attempt
in 0 seconds
next I plan to calculate whether sequence has become truly random
and apparently I will have to switch to index indexes as excel cells
option: shuffle so that each element moves further than 10% of place
because long arrays will certainly be without repetitions
result is visible if saved to disk or ram disk
between cells at least 10%
and number of repeated shuffles: up to 25% of array length
result control: open in notepad and search 1.0
as ratio is less than 10% and desired is missing
this means that elements are shuffled at a distance of at least 10% of array from each other
binary arise if you identify parity and odd
and comparing relative average: less
I think this my long-standing development
will help synthesize high-quality random
qbasic quickbasic qb64 мои темы Danilin
qb64phoenix.com/forum/forumdisplay.php?fid=7
qb64forum.alephc.xyz/index.php?board=6
School themes from USSR and EurAsia
qb64phoenix.com/forum/showthread.php?tid=310
qb64phoenix.com/forum/showthread.php?tid=310&page=2
XONIX
qb64phoenix.com/forum/showthread.php?tid=519
Knapsack 0-1 Danilin qb64 new Рюкзак
qb64phoenix.com/forum/showthread.php?tid=463
Relief 3d multivariate parametric
qb64forum.alephc.xyz/index.php?topic=4398
Russian Circle Diagram
qb64forum.alephc.xyz/index.php?topic=4367
Shuffling Letters
qb64forum.alephc.xyz/index.php?topic=3982
Atomic Heart
qb64phoenix.com/forum/showthread.php?tid=1509
Guess Number
qb64forum.alephc.xyz/index.php?topic=3999
qb64phoenix.com/forum/showthread.php?tid=900
qb64 Seven Bubble sort for you: which do you choose?
qb64phoenix.com/forum/showthread.php?tid=1540&pid=14341#pid14341
Guess Number 1-line C++ rextester.com/MROQN99228
Guess Number 1-line C# rextester.com/HNMUKT15877
Guess Number 1-line JavaScript js rextester.com/SDEAV70887
Integral of letters: all combinations of letters of all words
qb64forum.alephc.xyz/index.php?topic=3106
Rebus of Letters
qb64forum.alephc.xyz/index.php?topic=2961
Running strings
qb64forum.alephc.xyz/index.php?topic=1724
Russian Sorting Halves Danilin
qb64forum.alephc.xyz/index.php?topic=702
Fibonacci Фибоначчи
qb64phoenix.com/forum/showthread.php?tid=310
Screen Filler Zakraska
qb64phoenix.com/forum/showthread.php?tid=1104
Guess My Number
qb64phoenix.com/forum/showthread.php?tid=900
Snake Array
qb64forum.alephc.xyz/index.php?topic=3542
Fibonacci
qb64phoenix.com/forum/showthread.php?tid=310&pid=6152#pid6152
Python
Fibonacci Russian Infinity
rextester.com/IAJLF78214
trinket.io/embed/python/7fdc7adc84
<iframe src="https://trinket.io/embed/python/7fdc7adc84" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
Quadrillion
rextester.com/GWJFOO4393
trinket.io/embed/python/adae4501bd
<iframe src="https://trinket.io/embed/python/adae4501bd" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
C# MILLIARD Danilin rextester.com/DYVZM84267
C++Milliard Danilin rextester.com/YJPLL34287
JavaScript js rextester.com/PYYQS76244
Prime Numbers
C#
rextester.com/OUKWC32438
python
rextester.com/BLW15087
trinket.io/embed/python/f93bfef055
<iframe src="https://trinket.io/embed/python/f93bfef055" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
Темы создают Приоритет России
Waves of probability increase reliability. Priority of Russia
dev.to/andreydanilin/waves-of-probability-increase-reliability-46bk
Research and transformation by sorting pseudo-random sequences. Priority of Russia
dev.to/andreydanilin/research-and-sorting-transformation-pseudo-random-sequences-priority-of-russia-37ah
Falsification of randomness and transformation by sorting of pseudorandom sequences. Priority of Russia
dev.to/andreydanilin/falsification-of-randomness-and-transformation-by-sorting-of-pseudorandom-sequences-priority-of-russia-30fi
PI and randomness of digits after decimal point. Priority of Russia
dev.to/andreydanilin/pi-and-randomness-of-digits-after-decimal-point-priority-of-russia-43g8
Guess number: 1-line C# & qbasic learning algorithm. Priority of Russia
dev.to/andreydanilin/guess-number-1-line-c-qbasic-learning-algorithm-priority-of-russia-1h4g
Falsification of probability
bytes.com/topic/c-sharp/answers/973498-falsification-probability
Russian Sorting Halves
bytes.com/topic/c-sharp/answers/971639-bytes.com/topic/c-sharp/answers/971639-russian-sorting-halves-danilin-danilin
Алгоритмы: Rosetta Code или RosettaCode
Knapsack qb64 old Рюкзак
qb64forum.alephc.xyz/index.php?topic=3091
qb64forum.alephc.xyz/index.php?topic=2550
Knapsack 0-1 Danilin qb64 new Рюкзак
qb64phoenix.com/forum/showthread.php?tid=463
Knapsack 0-1 c# Рюкзак
csharpforums.net/threads/knapsack-0-1-c-binary-rosettacode-we.8108
bytes.com/topic/c-sharp/insights/977375-knapsack-0-1-c-binary-rosettacode-we
bytes.com/topic/python/insights/978063-knapsack-0-1-python-binary-rosettacode-we
bytes.com/topic/c/insights/978293-knapsack-0-1-c-binary-we
bytes.com/topic/javascript/insights/978412-knapsack-0-1-javascript-binary-rosettacode-we
kenokeno.ucoz.ru/publ/intpro/1-1-0-20
rextester.com/OIALC94208
rextester.com/YRFA61366
rextester.com/EAFWD33169
Knapsack 0-1 Python Рюкзак
python-forum.io/thread-37333.html
trinket.io/embed/python/dc6398732d
<iframe src="https://trinket.io/embed/python/dc6398732d" width="100%" height="356" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
Knapsack Python & qb64
rextester.com/KMDD4803
Файлы Files
kenokeno.ucoz.ru/doc/KNAPSACK.docx
kenokeno.ucoz.ru/doc/KNAPSACK.pdf
kenokeno.ucoz.ru/doc/knapsack_01_rjukzak.docx
kenokeno.ucoz.ru/doc/knapsack_01_rjukzak.xlsx
kenokeno.ucoz.ru/doc/daMilliard.docx
kenokeno.ucoz.ru/doc/MILLIARD.docx
kenokeno.ucoz.ru/doc/MILLIARD.pdf
Программа клетка какую проще создать чем объяснить
Создаётся цепочка 0 и 1 в массиве
и как лента отрезками перегруппировывается в таблицу
что особо видно: левый столбец постоянный
Смысл: увидеть есть ли среди случайных паттерны
Формула 0 и 1 Int(Sin(i)+Cos(i)+0.5) или Int(rnd+0.5)
Пока видим: компьютерные случайные нормальные без паттернов
n = 1000: Dim d(80,80): Randomize Timer ' kletka.bas
Dim a(n): For i=1 To n: a(i) = Int(rnd+0.5): Next
' wave ' a(i)=Sin(i)+Cos(i)
For k = 60 To 13 Step -1: s = Int(n/k): Screen 12
f=0: For i=1 To s: For j=1 To k ' DANILIN
f=f+1: d(i,j) = a(f): Next: Next: Cls
For i=1 To s: For j=1 To k
If d(i,j)=1 Then c=7 Else c=0 'color c=(i+j) Mod 5
For m=0 To 7
Line (i*8,j*8+m)-(i*8+7,j*8+m),c
Next: Next: Next
_Delay .5: Next: End
A cell program which is easier to create than to explain
A chain of 0 and 1 is created in array
and line are regrouped into segments in table
what is particularly visible: left column is constant
Meaning: to see if there are patterns among random ones
Formula 0 and 1 Int(Sin(i)+Cos(i)+0.5) or Int(rnd+0.5)
So far we see: computer random normal without patterns
Nobel Prize will not receive itself
Nobelevskaya premiya sama sebya ne poluchit
Нобелевская премия сама себя не получит
Le prix Nobel ne se recevra pas
Nobelpreis wird sich nicht erhalten
Il Premio Nobel non ricevera se stesso
|