Форум сайта python.su
tz4678@gmail.comПозвольте огорчить, это вообще никому не интересно.
Кроме русскоязычных программистов это никому не интересно
Офлайн
tz4678@gmail.comПозиция символа неправильно вычисляется. Есть вероятность, что индекс будет часто уходить за край, приводя к лишним проходам в цикле.
Моя функция для генерации паролей, может кому пригодиться (использовать в консолечке браузера)function randChars(length, charSet) { length = length || 8; charSet = charSet || "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890"; var ret = ""; while (ret.length < length) { ret += charSet.charAt(Math.random() * charSet.length); } return ret; }
<script type="text/javascript"> function genPass(len, base) { var out = ""; for (var i = 0; i < len; i++) { var idx = Math.round(Math.random() * 10000) % base.length; out += base.charAt(idx); } return out; } function genPassWrapper() { return genPass(8, "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "0123456789" + "!@#$%^&*()_+|[]{}"); } document.write(genPassWrapper()); </script>
Отредактировано py.user.next (Июнь 8, 2015 02:11:26)
Офлайн
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:02)
Офлайн
tz4678@gmail.comНе, речь идёт об индексе, он должен всегда находиться в строке. Если же он превышает, то charAt() возвращает пустую строку, из-за чего происходит повтор.
так что мой код не имеет никаких багов.
<script type="text/javascript"> document.write("abc".charAt(2)); document.write("abc".charAt(3)); document.write(typeof("abc".charAt(3))); </script>
Офлайн
vanished
Отредактировано tz4678@gmail.com (Авг. 1, 2020 15:49:03)
Офлайн
Проверил всё, точно мне показалось, что там неправильно.
За границы не будет вылазить.
charSet.charAt(Math.random() * charSet.length);
>>> 3 * 0.999999999 2.999999997 >>> 3 * 0.5 1.5 >>> 3 * 0.1 0.30000000000000004 >>>
Отредактировано py.user.next (Июнь 11, 2015 07:19:51)
Офлайн