2016-03-30 28 views
0

I (aşağıda tam JsFiddle dahil) 0'a aşağıdaki eklemek DEĞIL olduğunu 13 & -13 arasındaki değerler döndürmek için kastedilmektedir Aşağıdaki küçük kod söz konusu javascript biraz var:Neden! == 0 değerleri 0'a eşit değil yerine 0'a eşittir?

$(document).ready(function() { 
    function GenerateRandomNumber() { 
    var min = -13, 
     max = 13; 
    var random = Math.floor(Math.random() * (max - min + 1)) + min; 
    return random; 
    } 
    var x = GenerateRandomNumber(); 

    function GenerateRandomNumber2() { 
    var min2 = -13, 
     max2 = 13; 
    var random2; 
    while ((random2 + x) !== 0) { 
     random2 = Math.floor(Math.random() * (max2 - min2 + 1)) + min2; 
    } 
    return random2; 
    } 
    var xx = GenerateRandomNumber2(); 
    $('#x').html(x); 
    $('#xx').html(xx); 
    $('#y').html(sum); 
}); 
"! ==":

JsFiddle bunu yapmak niyetinde ne neden tersini yapıyor bilemiyorum http://jsfiddle.net/vL77hjp0/

Ancak, 0'a eşit olan değerleri dönen gibi görünüyor. Herhangi bir yardım büyük takdir edilecektir.

Kişisel süre döngü değeri 0. yani değilken değerleri bulmak için çalışıyor devam edecek
+9

kodunuzu okuyun. Toplamın sıfır olmadığı sürece yeni bir rasgele sayı seçiyorsunuz. Bu, toplam * sıfır olduğunda döngü yapmayı durduracağı anlamına gelir. – hobbs

+0

Şimdi anlıyorum. “Böyle bir şey” demek istediğimi yorumluyordum. yani "toplamın 0 olmadığına dair yeni bir numara bulun." –

cevap

0

0'a sahip olmayan değerler aldığınızda devam edin. Eğer bir değere sahip olarak ayarlayın değil çünkü

0

random2, sıfıra eşit başlıyor.
Sıfır olmadığını kontrol et. Sıfır, bu yüzden hiçbir şey olmuyor. Ardından, hala sıfır olan Random2'ye dönersiniz.

0

Sen değişmelidir "ise" bir "yaparken" öncelikle rastgele bir sayı oluşturmak ve toplamı sıfırsa sonra kontrol etmek gerekir çünkü. Böylece ben de durumu değiştirdim.

do { 
    random2 = Math.floor(Math.random() * (max2 - min2)) + min2; 
} while ((random2 + x) === 0) 
+0

Teşekkürler! Bu işe yarıyor ... Neden işe yaradığı konusunda biraz kafam karıştı. Kefillerin terimleriyle, bunu “rastgele bir sayıyı” (bu rasgele sayı ve önceki sayı toplamı 0'a eşittir) olacak şekilde yapmak anlamına geliyor. rasgele sayı ve önceki sayının aynı 0'a eşit DEĞİL iken Gerçekte, ancak, bir rastgele sayı buluyor bir daha "! ==" yerine birlikte çalışması gerekir gibi görünüyor "===". Bu neden böyle? Teşekkürler! –

+0

Boşver - Sanırım anladım. Diyor ki, "rastgele + x 0'a eşit olduğu sürece, yeni bir sayı aramaya devam edin." –

İlgili konular