Работа проверялась в Debian на моём компьютере и Ubuntu в firstvds, но в Linux кодировка русских букв другая, добавлено описание функций клиента на английском языке. Теперь буду все комментарии переводить на английский язык и писать новые комментарии.
Правильно. Но случайное число мне пришлось получать таким образом:
double d = ((double)rand()) / RAND_MAX; int r = (int)(d * (i + 1)); r = (r == i + 1) ? i : r;
Иначе случайные числа не будут равновероятны. Можно проще:
int r = rand() % (i + 1);
Но с действительными числами для меня привычнее. В Википедии было написано, что в результате ошибок может получиться алгоритм Сандры Саттоло, в котором диапазон случайных чисел на 1 меньше, это у меня первоначально получился такой алгоритм, поэтому его пришлось дорабатывать. Скорее всего, Сандра Саттоло именно такого рода алгоритм и получила, какой написан выше, а по поводу его ошибочности в Википедии написано неправильно. Но для всех i от n − 1 до 1 - тоже правильно, просто о методах получения случайных чисел в диапазоне от 0 до i ничего не написано. Они должны быть равновероятны.
На всякий случай напишу, что 2 программы - сервер и клиент хранятся в GitHub (AndrewMakarovsky/nn_mathserver и AndrewMakarovsky/nn_mathclient), посмотреть их можно. Но требуется небольшая чистка кода, окончательное тестирование и более подробные комментарии.
Ищу работу, резюме https://career.habr.com/a-makarovskiy.
Работа проверялась в Debian на моём компьютере и Ubuntu в firstvds, но в Linux кодировка русских букв другая, добавлено описание функций клиента на английском языке. Теперь буду все комментарии переводить на английский язык и писать новые комментарии.
Версия 1.0 готова, закачана в GitHub (AndrewMakarovsky/nn_mathserver и AndrewMakarovsky/nn_mathclient).
Правильно. Но случайное число мне пришлось получать таким образом:
double d = ((double)rand()) / RAND_MAX;
int r = (int)(d * (i + 1));
r = (r == i + 1) ? i : r;
Иначе случайные числа не будут равновероятны. Можно проще:
int r = rand() % (i + 1);
Но с действительными числами для меня привычнее. В Википедии было написано, что в результате ошибок может получиться алгоритм Сандры Саттоло, в котором диапазон случайных чисел на 1 меньше, это у меня первоначально получился такой алгоритм, поэтому его пришлось дорабатывать. Скорее всего, Сандра Саттоло именно такого рода алгоритм и получила, какой написан выше, а по поводу его ошибочности в Википедии написано неправильно. Но для всех i от n − 1 до 1 - тоже правильно, просто о методах получения случайных чисел в диапазоне от 0 до i ничего не написано. Они должны быть равновероятны.
Сегодня-завтра постараюсь всё доработать.
На всякий случай напишу, что 2 программы - сервер и клиент хранятся в GitHub (AndrewMakarovsky/nn_mathserver и AndrewMakarovsky/nn_mathclient), посмотреть их можно. Но требуется небольшая чистка кода, окончательное тестирование и более подробные комментарии.
Сделано для Linux, компилируются с помощью make.