Перемешивание чисел от 1 до 100 является правильной базовой стратегией, но если вам нужно всего 8 перетасованных чисел, нет необходимости перетасовывать все 100 номеров.
Я не знаю Javascript очень хорошо, но я считаю, что легко создать массив из 100 нулей. Затем в течение 8 раундов вы меняете n-й элемент массива (n начиная с 0) со случайно выбранным элементом от n + 1 до 99. Конечно, любые элементы, которые не заполнены, еще не означают, что элемент действительно был бы исходный индекс плюс 1, так что это тривиально, чтобы фактор. Когда вы закончите с 8 раундами, первые 8 элементов вашего массива будут иметь ваши 8 перетасованных чисел.
Обычно A | B
правильный способ сделать это. Но символ вертикальной черты является в основном объединением двух полных выражений XPath. Это может быть раздражающим для использования его в случае как это:
/red/yellow/blue/green/gold | red/orange/blue/green/gold
, так как Вы повторяете полноту выражения за исключением одной маленькой части, он - то изменение.
В случаях как это, часто имеет смысл использовать предикат и эти name()
функция вместо этого:
/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
Эта техника предоставляет Вам доступ к намного более широкому диапазону логических операций. Это также (очевидно) быстрее, поскольку навигатор XPath только должен пересечь узлы, это тестирует однажды.
<xsl:template match= " 'A' or 'B'" >
существует несколько проблем с этим шаблоном соответствия :
А обрабатывают соответствия по шаблону узлы , не строки. Поэтому названия элементов, которые будут согласованы, не должны быть определены как заключенные в кавычки строки.
оператор XPath "или" действия на двух булевых значениях, не на узлах. Что необходимо, вот другой оператор XPath - объединение оператор "|" .
вышеупомянутое Принятия во внимание, каждый правильно определит шаблонное правило как:
<xsl:template match= "A | B" >
<!-- whatever I want to do here -->
</xsl:template>
Я думаю, что более удобно использовать этот XPath
/red/(yellow | orange)/blue/green/gold
, а не
/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
Ниже информации подбирался из: http://www.cafeconleche.org/books/bible2/chapters/ch17.html#d1e2090
, который я буду перефразировать, ищите текст "Используя или оператор |" в том документе.
синтаксис:
<xsl:template match="A|B">
<!-- Do your stuff> -->
</xsl:template>