Как работает равенство последовательностей в JavaScript?

Существует множество учебных пособий для = = и = = = , поэтому, пожалуйста, не направляйте меня к базовому учебнику, мой вопрос немного более конкретный:

Например, http://www.w3schools.com/jsref/jsref_obj_string.asp указывает, что:

Синтаксис:

var txt = new String("string");

// or more simply:
var txt = "string";

Хорошо, но как насчет этого?

alert(new String("a") == new String("a")); // false
alert("a" == "a"); // true

var a = new String("a");
var b = new String("a");
alert(a == b); // false

var c = "a";
var d = "a";
alert(c == d); // true

alert(c === d); // true
alert (a === c); // false

Конечно, никто не называет new Последовательности () в любом случае, но это что-то о равенстве не удается, потому что new Последовательности () обрабатывается как объект не как последовательность?

И конечно W3Schools не является самым доверенным источником, но я.

Пожалуйста, объясните.

-121--1039194-

Как выбрать один из n объектов случайным образом, не зная сначала n? Как бы вы прочитали текстовую строку и выбрали и напечатали одну случайную строку, если вы не знаете количество строк заранее? Да, это проблема из жемчужины программирования, которую я получаю...

Для конкретности, как бы вы читали текстовую строку, выбирали и печатали одну случайную строку, когда вы не знаете заранее количество строк?

Да, это проблема из перламутра программирования, которую я путаю.

Решение выбирает первый элемент, затем выбирает второй с вероятностью 1/2, третий с 1/3 и так далее.

Алгоритм:

i = 0
while more input lines
  with probability 1.0/++i
    choice = this input line
 print choice

Предположим, что окончательный выбор - 3-й элемент, вероятность - 1 x 1/2 x 1/3 x 3/4 x... x n-2/n-1 x n-1/n = = 1/2n? Но 1/n должно быть правильным.

6
задан deepsky 1 September 2011 в 07:16
поделиться