2017-07-22 30 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()) 
 
}