Je veux créer une fonction générera un nombre aléatoire entre 0 et 9 qui n'est pas dans la matrice.
mon code jusqu'à présent: p> i Voulez-vous revenir seulement 1 numéro. Comment puis-je faire cela? P> Merci. P> P>
6 Réponses :
var myArr = [0,2,3,4]; function newNum(){ for (var i = 0; i < 10; i++) { if (!myArr.includes(i)) { return i; } } // return -1 if all numbers present in array.. return -1; } newNum();
Ceci semble seulement être une solution partielle car il ne montre pas comment générer un nombre aléatoire entre 0 et 9
Quoi de cela?
p>
const invalidValues = [0,2,3,4]; const getRandomInt = (min, max) => { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } const getValidRandomInt = (min, max) => { while(true) { let temp = getRandomInt(min,max) if(!invalidValues.includes(temp)) { return temp; } } } console.log(getValidRandomInt(0,10))
Une façon très coûteuse de générer un nombre aléatoire si la distribution n'est que de 0 -9?
Générez le numéro dans la plage à l'aide de P> math.random () code> puis de la boucle et vérifiez si le numéro généré est dans la matrice ou non, sinon dans la matrice renvoie le numéro:
function getRandomArbitrary(min, max, arr) {
arr = new Set(arr);
while(true){
let val = Math.floor(Math.random() * (max - min) + min);
if(!arr.has(val)){ return val;}
}
}
console.log(getRandomArbitrary(0, 10, [4,3,2]));
Utilisez Vous pouvez le envelopper avec math.floor code> pour arrondi à un entier ou utiliser un bitwise ou ( math.random () * (max - min) + min code> pour obtenir un numéro dans une plage. P>
| code>) pour petits nombres. p>
var myArr = [0,2,3,4];
function newNum(n_arr){
let r = () => Math.random()*9 | 0,
n = r();
while(n_arr.includes(n)) {
n = r();
}
return n;
}
let result = newNum(myArr);
console.log(result);
var myArr= [0,2,5]; function randomNumber(myArr, n){ n ? n : 1; var num = Math.random() * n; if(myArr.indexOf( num ) !==-1 ) { return randomNumber( myArr, n ); } return num; } randomNumber(myArr, 10);
Si vous souhaitez renvoyer le premier numéro manquant dans le tableau, à partir de votre code ci-dessus, vous pouvez simplement vérifier si chaque valeur du i code> existe dans la matrice et le moment où la valeur n'existe pas , renvoyez-le.
var myArr = [0,2,3,4]; // original array
function newNum(){
for (var i = 0; i < 10; i++) { // loop through i from 0-9
if (myArr.indexOf(i) === -1){ // check for the first missing number
return i; //return it
}
}
}
newNum()
@karthick Mais comment puis-je vérifier si le numéro est présent dans le tableau? Je veux générer un numéro qui n'est pas dans le tableau.
Ouais désolé n'a pas lu la question correctement
Eh bien
inclut code> retourne booléen, vous devez donc faire quelque chose comme
si (! Myarr.Inclut (i)) Retour I CODE> C'est tout ce dont vous avez besoin dans
pour code > boucle, si elle quitte l'extérieur, il n'y a pas de nombre possible entre 0-9