Math.Random不能正常工作打字稿

问题描述:

简单的问题,但我找不到答案,我对数学很不好。问题是我有这个公式来产生一个随机数。Math.Random不能正常工作打字稿

numRandomed: any; 

    constructor(public navCtrl: NavController, public navParams: NavParams) { 

    } 

    public randomize(min, max) { 
    console.log("minimo: " + min); 
    console.log("maximo: " + max); 

    this.numRandomed = Math.floor(Math.random()*(max-min+1)+min); 
    console.log(this.numRandomed); 
    } 

和视图

<ion-list> 

    <ion-item> 
     <ion-label floating>Min Number</ion-label> 
     <ion-input type="number" [(ngModel)]='minNumber'></ion-input> 
    </ion-item> 

    <ion-item> 
     <ion-label floating>Max Number</ion-label> 
     <ion-input type="number" [(ngModel)]='maxNumber'></ion-input> 
    </ion-item> 

    </ion-list> 

    <button ion-button (click)='randomize(minNumber,maxNumber)'>Randomize!</button> 
    <p>{{ numRandomed }}</p> 

但随机数总是比最小数量少,不在此范围内,我不知道为什么......

任何线索??谢谢!!

+0

为什么当你不使用randomize类/对象并立即返回该字段的值时,为'randomize'原型添加字段'numRandomed'? – LutzL

+0

我在视图中使用了该变量,{{numRandomed}} 而我通过视图中的按钮调用函数。 – Mystearica

+0

这是一种封闭,你确定你使用正确的封闭形式吗?是不是有必要在外面定义'let me = this;'然后分配给'me.numRandomed'? – LutzL

我在node.js中试过这段代码,它运行良好。

此代码:

function randomize(min, max) { 
    console.log("minimo: " + min); 
    console.log("maximo: " + max); 

    let x; 

    console.log(Math.floor(Math.random()*(max-min+1)+min)); 
    console.log(x = Math.floor(Math.random()*(max-min+1)+min)); 
} 

randomize(10,20) 
randomize(10,20) 
randomize(10,20) 
randomize(10,20) 
randomize(10,20) 
randomize(10,20) 

是具有这种输出

minimo: 10 
maximo: 20 
20 
11 
minimo: 10 
maximo: 20 
17 
13 
minimo: 10 
maximo: 20 
18 
20 
minimo: 10 
maximo: 20 
13 
11 
minimo: 10 
maximo: 20 
18 
10 
minimo: 10 
maximo: 20 
12 
16 

我建议,那您覆盖在随机化方法的某些点或返回值numRandomed不使用或这样的事情。

+0

将我的代码添加到主帖子中。 – Mystearica