2017-02-09 5 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