2017-12-29 5 views
0

In dem folgenden Code in einer Anordnung vorhanden sind, erzeugt die Funktion randomBetween eine Zufallszahl und die Funktion randomBetweenAndExcluding erzeugt eine weitere Zufallszahl, die von der ersten:benötigen Code zu modifizieren, so dass sie alle Werte ausschließt, die

$(document).ready(function() { 

function randomBetween (min, max) { 
    var ceiling = max + 1; 
    return Math.floor(Math.random() * (ceiling - min)) + min; 
} 

function randomBetweenAndExcluding (min, max, excluding) { 
    var random; 
    do { 
    random = randomBetween(min, max); 
    } while(random === excluding); 
    return random; 
} 

PROBLEM: Ich versuche, dies zu erweitern, so dass randomBetweenAndExcluding keine Nummern ausschließt, die in einem Array vorhanden sind. Etwas, das im Wesentlichen Codes für die folgenden (Abschnitte, die in Sternchen platziert gewechselt werden müssen):

$(document).ready(function() { 

function randomBetween (min, max) { 
    var ceiling = max + 1; 
    return Math.floor(Math.random() * (ceiling - min)) + min; 
} 

function randomBetweenAndExcluding (min, max, ***[ARRAY WITH X # of ELEMENTS]******) { 
    var random; 
    do { 
    random = randomBetween(min, max); 
    } while(random === ***ANY ELEMENT WITHIN THE ARRAY****); 
    return random; 
} 

ich mit indexOf und includes versucht herum spielen, aber haben kein Glück gehabt.

Danke!

+0

Gerade Anschluss einige der anderen Sprachen: https://stackoverflow.com/questions/6443176/ how-can-ich-generate-a-random-number-in-a-range-aber-ausschließen-einige – Caramiriel

Antwort

1

Die folgenden Werke für mich:

function randomBetween (min, max) { 
    var ceiling = max + 1; 
    return Math.floor(Math.random() * (ceiling - min)) + min; 
} 

function randomBetweenAndExcluding (min, max, array) { 
    var random; 
    do { 
    random = randomBetween(min, max); 
    } while(array.includes(random)); 
    return random; 
} 

array = [1,2,5]; 
alert(randomBetweenAndExcluding(1,5,array)) 

Sie können es in diesem JSFiddle Check-out: https://jsfiddle.net/scz1n8a9/

+0

Ich hatte alles unnötig kompliziert gemacht; das ist wunderbar einfach. Danke für die ausgezeichnete Antwort! –

Verwandte Themen