Как я могу создать массив из 40 элементов со случайными значениями от 0 до 39? подобно
[4, 23, 7, 39, 19, 0, 9, 14, ...]
Я пробовал использовать решения отсюда:
http://freewebdesigntutorials.com/javaScriptTutorials/jsArrayObject/randomizeArrayElements.htm
но массив, который я получаю, очень мало рандомизирован. Он генерирует множество блоков последовательных чисел ...
javascript
arrays
random
Александра
источник
источник
источник
[...Array(40)].map(_=>Math.ceil(Math.random()*40));
было бы на 11 символов меньше вашего и на 7 меньше, чем в оригинале.Math.ceil
, хотя мы исключили 0 как вариант. Если мы можем принять 1-40 вместо 0-39, это сработает. В противном случае , уменьшите улучшение персонажа для возврата кMath.floor
)ES5:
ES6:
источник
_
иi
аргументами? не нужно в ES6, если я не ошибаюсь._
- это текущий элемент иi
текущий индекс. Вы правы, в обоих случаях они не нужны. Вы можете удалить их, если хотите.Еще более короткий подход ES6:
Также у вас может быть функция с аргументами:
источник
.fill()
без каких-либо параметров заполнит массивundefined
, а это единственное, что здесь нужно для.map()
работыСамый короткий :-)
[...Array(40)].map(e=>~~(Math.random()*40))
источник
~~
сокращение от Math.floor~~
сокращения? (править: ааа, я вижу , это просто побитовый оператор )Math.random()
вернет число от 0 до 1 (исключая). Итак, если вы хотите 0-40, вы можете умножить его на 40, самый высокий результат - это то, на что вы умножаете.http://jsfiddle.net/robert/tUW89/
источник
Последовательности случайных элементов часто содержат блоки последовательных чисел, см. «Заблуждение игрока» . Например:
источник
ограничил массив до 6 значений, чтобы было легче увидеть.
источник
Поскольку диапазон чисел ограничен, я бы сказал, что лучше всего создать массив, заполнить его числами от нуля до 39 (по порядку), а затем перетасовать его.
источник
Math.random()
40 раз, поскольку он заставит каждое число появляться один раз и не будет повторяться.Это традиционный способ сделать это, но я второй @Pointy и @Phrogz, если вы хотите избежать дублирования в своем массиве без необходимости выполнять дорогостоящие вычисления.
источник
Уникальные однострочные решения на каждый день.
Значения в массивах полностью случайны, поэтому, когда вы будете использовать эти фрагменты, они будут другими.
Массив (длина 10) со случайными символами в нижнем регистре
Массив (длина 10) со случайными целыми числами от 0 до 99
Массив случайных дат (от 10 лет назад до настоящего времени)
Массив (длина 10) случайных строк
Другие полезные вещи вы можете найти здесь https://github.com/setivolkylany/nodejs-utils/blob/master/utils/faker.js
источник
Используя некоторые новые функции ES6, теперь этого можно достичь с помощью:
Обратите внимание, что это решение будет работать только в современных браузерах, которые поддерживают эти функции ES6: стрелочные функции и Array.from ().
источник
См. Ниже: -
источник
со страницы, предложенной @Phrogz
источник
Мне нужно было что-то немного отличное от того, что давали эти решения, в том, что мне нужно было создать массив с рядом различных случайных чисел, удерживаемых в указанном диапазоне. Ниже мое решение.
Я бы предпочел не создавать цикл, который может закончиться множеством ненужных вызовов (если ваш счетчик и диапазон высокие и близки к тому же числу), но это лучшее, что я мог придумать.
источник
Думаю, этот метод решит проблему с вероятностями, ограниченными только генератором случайных чисел.
источник
Если вам это нужно со случайными уникальными значениями из диапазона 0 ... длины:
источник
Я почти уверен, что это самый короткий способ создать случайный массив без повторов.
источник
keys
функцииArray.from(Array(40).keys()).sort(_ => Math.random() - .5)
:? Вы можете даже сойти с ума и использовать оператор распространения! Но сейчас это для меня слишком волнительно.Немного поздно на вечеринку, но я использую randojs.com для случайности, потому что он делает такие вещи очень легкими. Вы можете получить произвольно перемешанный массив чисел от 0 до 39 следующим образом:
Никакой суеты с логистикой всего этого - плюс он супер читаемый и простой для понимания :)
источник
Генераторы
Массив длиной 40 из 40 случайных возможных значений (0 - 39) без повторяющихся значений лучше перемешать, как объясняют @Phrogz и @Jared Beck. Другой подход, только для записей, может заключаться в использовании генераторов. Но такому подходу не хватает производительности по сравнению с другими предлагаемыми решениями .
источник