Случайный символ из короткой строки - можно ли повлиять на случайность? - PullRequest
1 голос
/ 02 января 2011

Если у меня очень короткая строка, скажем (JavaScript):

var = "abcd";

и я хочу получить из нее случайный символ, я мог бы использовать:

var random_char = str.charAt( Math.floor(Math.random() * str.length) );

СейчасMath.floor(Math.random() * str.length) возвращает случайное число в диапазоне [0..3].

Можно ли увеличить воспринимаемую случайность возвращаемого символа путем умножения строки, то есть путем эффективного увеличения диапазона случайных чисел?

var = "abcdabcdabcdabcdabcdabcd";

Ответы [ 3 ]

4 голосов
/ 02 января 2011

Это ничего не изменит.Math.random() возвращает псевдослучайное значение между [0..1).Предполагая, что генератор случайных чисел хорошего качества, не имеет значения, будете ли вы отображать его диапазон на abc или abcabcabc.

Если Math.random() вернул случайныйчисла очень низкого качества (т. е. человек может определить логику, стоящую за ними, просто взглянув на последовательность чисел), ваша стратегия действительно увеличит воспринимаемую «случайность».Но это не имеет значения, поскольку среды выполнения JavaScript обычно не пишутся обезьянами.

3 голосов
/ 02 января 2011

Нет, не может.Хуже того, вы получите ошибку в 12,5% случаев, так как Math.round округляет значения от 3,5 до 3,999999 до 4.

3 голосов
/ 02 января 2011

Я бы сказал нет. Вероятность получения a, b, c или d составляет 25%.

...