Найти - Пользователи
Полная версия: vanished
Начало » Python проекты » vanished
1 2 3
FishHook
tz4678@gmail.com
Кроме русскоязычных программистов это никому не интересно
Позвольте огорчить, это вообще никому не интересно.


py.user.next
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>
tz4678@gmail.com
vanished
py.user.next
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>
tz4678@gmail.com
vanished
py.user.next
Проверил всё, точно мне показалось, что там неправильно.
За границы не будет вылазить.
charSet.charAt(Math.random() * charSet.length);

>>> 3 * 0.999999999
2.999999997
>>> 3 * 0.5
1.5
>>> 3 * 0.1
0.30000000000000004
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB