2017-02-09 123 views
0

簡單的問題,但我找不到答案,我對數學很不好。問題是我有這個公式來產生一個隨機數。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

回答

1

我在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