У меня есть вопрос, касающийся JavaScript Math.random()
:Javascript: Исключить элемент из случайного набора - (любознательность)
Я (для игры я строй) случайным образом генерировать каждое число из заданного набора (т.е. от 0 до 1000), и каждый раз, когда мне приходится генерировать число, я должен проверить, был ли этот номер уже «сгенерирован».
Решение довольно простое мышление о простом алгоритме, который проверяет, присутствует ли случайное целое в сгенерированном наборе. Он зацикливает числа, пока не найдет их. сниппета ниже:
/* ... */
for(var i = 0; i<upperBound; i++){
var randN = Math.floor(Math.random()*upperBound);
while(myRandomNumbers.contains(randN)){
loops++;
randN = Math.floor(Math.random()*upperBound);
}
myRandomNumbers.push(randN);
}
/* ... */
Я хотел бы знать: это лучший способ для достижения этой цели? или есть ли какие-либо способы, а не цикл, пока он не породит «хороший» номер, чтобы исключить конкретный набор в случайном генерации?
Спасибо большое всем!
Может быть, [этот ответ] (http://stackoverflow.com/questions/3796786/random-number-generator-without-dupes-in-javascript) поможет. Или [этот] (http://stackoverflow.com/questions/2380019/generate-8-unique-random-numbers-between-1- и -100). – user113716
@patrick dw: это мое решение, рекурсивное;) – stecb
Да, я читал слишком быстро. – user113716