2017-07-22 28 views
1

所以我試圖做一個函數,返回一個隨機數(我需要代碼執行排除)爲不同的兩個函數生成相同的數字。基本上我打算調用一個返回一個隨機數的函數,但是當我再次調用該函數時,我需要它與前一個函數中的數字相同(我對JavaScript並不擅長)。我有這些代碼,當然,它產生的每個函數的一些其他號碼:如何生成兩次拉杜姆數?

function gen() { 
    return Math.floor(Math.random() * 21) + 40; 
} 

function chan() { 
    var rand = gen(); 
} 

function sell() { 
    var rand = gen(); 
} 
+0

製作'rand'一個全局變量並分配給它的'chan'並使用它(不分配給它)在'sell'。 –

回答

-1

只存儲隨機數,這樣就可以重新使用它。

var rand; 
function gen() { 
return Math.floor(Math.random() * 21) + 40; 
} 

function chan() { 
rand = gen(); 
} 

chan(); 
console.log(rand); 
+0

爲什麼要投票? OP說他不擅長Javascript。有時候事情可以用另一種方法簡化.. –

3

你必須改變你的邏輯才能得到你想要的結果。它違背了rand函數的目的,試圖強制它返回兩次相同的值。取而代之的是,只需獲取變量,然後將其傳遞給您需要的函數。例如:

function gen() { 
    return Math.floor(Math.random() * 21) + 40; 
} 

function chan(randomNumber) { 
//logic goes here 
} 

function sell(randomNumber) { 
    //logic goes here 
} 

function app() { 
    var randomNumber = gen(); 
    chan(randomNumber); 
    sell(randomNumber); 
} 
+0

非常感謝你,爲你的直接答案和幫助:) –

0

var rand; 
 
function gen() { 
 
    return Math.floor(Math.random() * 21) + 40; 
 
} 
 

 
function chan() { 
 
    rand = gen(); 
 
    return rand; 
 
} 
 

 
function sell() { 
 
    return rand; 
 
} 
 

 
console.log(chan()); 
 
console.log(sell());

基本上創建新的隨機數,每次陳被調用,並返回一個隨機數,每次賣的是調用。

0

基本上我要調用返回一個隨機數 但是當我再次調用該函數,我需要的是同樣數量的 如前面的功能

您可以將功能如果未定義屬性,則將當前值Math.floor(Math.random() * 21) + 40存儲爲函數的屬性,返回屬性值,將屬性值存儲爲函數內的局部變量,否則將函數屬性設置爲undefined並返回本地變量

function gen() { 
 
    if (!this.n) { 
 
    this.n = Math.floor(Math.random() * 21) + 40; 
 
    return this.n; 
 
    } 
 
    if (this.n) { 
 
    const curr = this.n; 
 
    this.n = void 0; 
 
    return curr 
 
    } 
 
} 
 

 
for (let i = 0; i < 10; i++) { 
 
    console.log(gen()) 
 
}