Устранение тире из крипто-генерируемых случайных значений узла? - PullRequest
0 голосов
/ 13 марта 2020

В библиотеке NPM cuid есть эта функция:

import * as crypto from "crypto"

var lim = Math.pow(2, 32) - 1;

export function getRandomValue () {
  return Math.abs(crypto.randomBytes(4)
    .readInt32BE(0) / lim)
}

Возвращаемое значение не должно возвращать значения с дефисами в нем.

Однако, согласно моей тестовой выборке из миллиона значений, одно возвращаемое значение содержит значение da sh.

Как мы исключаем тире?

Кто-то в предыдущем вопросе предложил использовать % вместо /, и это работает. Я проверил 10 миллионов образцов, и ни один из них не содержит тире, так что, похоже, это правильное решение для остальных из вас?

1 Ответ

1 голос
/ 14 марта 2020

"Да sh" не является дефисом.

Это научная запись c для числа, такого как 8.55652615627193e-7.

См. 'e' в javascript числах для аналогичного вопроса.

Вы можете использовать num.toString(16) для преобразования в шестнадцатеричное число, которое выглядит как 0.00000e5b00000e5b.

...