Comments 13
Извините, но не совсем понятно какую задачу вы пытаетесь решить.
Одной из функций приложения, над которым я работал, было показывать набор случайных цифр. Стало интересно получится ли найти правило по которому можно соотнести каждый такой набор с целым числом.
Вам нужно отобразить M случайных цифр, при том что само M тоже случайно и меньше заданного N?
И вы решили найти функцию (в математическом смысле) которая отображает число X в эту самую последовательность цифр?
Вы правильно поняли. Это статья про поиск той самой функции. В приложении требовалось выводить последовательности от 0 до 999, но я хотел посмотреть насколько сильно это можно абстрагировать. Почти все методы которые первыми приходят в голову не справляются с нулями слева (01, 001 и тд), поэтому так увлёкся.
Ну вам большой плюс что вы выразили это в виде алгебраической формулы, конечно. Но вообще математики не гнушаются использовать if/switch при записи функций. Функция Дирихле, как тому пример.
Кстати, интересно почему у вас получилось 1_111_111_109, а не 1_111_111_110?
Для случая с тремя цифрами:
У нас :
1000 комбинаций 000-999
100 комбинаций 00-99
10 "комбинаций" 0-9
(и еще 1 "комбинация" для пустой строки).
Если пустую строку не учитывать, то получается 1110 возможных комбинаций. А вы одну где-то потеряли.
А если генерировать числа не от
0
, а от-10
, то можно вручную разделить их на числа с нулём в начале и без.
А если генерировать числа от 10^(series_length)
, то можно просто игнорировать лидирующую единицу и в ус не дуть.
Не, если я правильно понял что автор хотел сделать, то так не получится. Потому что код должен уметь генерировать "0", "1", "00", "01", "001", "000" и все в том же духе. А у вас - получится только 000 и 001.
Отнюдь. Чтобы генерировать строки разной длины, надо просто варьировать параметр series_length.
Таки "нюдь".
надо просто варьировать параметр series_length.
Ну это простой и очевидный вариант Можно вообще просто в цикле генерировать цифры и не париться. А вы попробуйте напишите функцию которая одно случайное число, отображает в эту самую последовательность цифр переменной длины. Да еще и так, чтобы распределение сего отображения было равномерным. Я так понимаю, это и было целью данной работы.
Имхо, алгебры я тут не увидел. Только арифметику
Мне тоже непонятно, что за задача.
Как придумал себе (проблему) задачу и вспомнил школьный курс алгебры