0

私はループが10回実行される必要があるjavascript関数を使用しています。これらの10回の間に、+および-操作に基づいてランダムな質問をスローする必要があります。その中で、4つの「+」質問、3つの「-」質問が必要ですと 3 " " の質問。そして、ループは10回以上実行されるべきではありません。誰かがこれのロジックを組み立ててください...

これまでの私のコード:

<script type="text/javascript">
        var op=new Array();
        var addCount=0;
        var subCount=0;
        var mulCount=0;
        var counter=0;
        var no;
        op[0]="+";
        op[1]="-";
        op[2]="x";

        Array.prototype.chooseRandom = function() 
        {
            return this[Math.floor(Math.random() * this.length)];
        };
        var a = [1, 2];
        var b = [0, 2];
        var c = [0, 1];

            no=Math.floor((Math.random()*3));
            while(addCount < 4|| subCount < 3 || mulCount < 3)
            {

                    no=Math.floor((Math.random()*3));
                    if(no==0)
                    {
                        if(addCount<4)
                        {
                            addCount++;
            var op1=Math.floor(Math.random() * (99 - 10+1)) + 10;
                var op2=Math.floor(Math.random() * (99 - 10+1)) + 10;
                        }
                        else
                        {
                            no=a.chooseRandom();
                        }
                    }       
                    else if(no==1)
                    {
                        if(subCount<3)
                        {
                            subCount++;
            var no1=Math.floor(Math.random() * (99 - 10+1)) + 10;
            var no2=Math.floor(Math.random() * (99 - 10+1)) + 10;
                            if(no1>no2)
                            {
                                 var op1=no1;
                                 var op2=no2;
                            }
                            else
                            {
                                var op1=no2;
                                var op2=no1;
                            }
                        }
                        else
                        {
                            no=b.chooseRandom();
                        }
                    }
                    else if(no==2)
                    {
                        if(mulCount<3)
                        {
                            mulCount++;
            var op1=Math.floor(Math.random() * (99 - 10+1)) + 10;
            var op2=Math.floor(Math.random() * (9 - 1+1)) + 1;
                        }
                        else
                        {
                            no=c.choseRandom();
                        }
                    }

                    counter++;
            }
    </script>
4

2 に答える 2

0

それが役立つことを願って -

<script type="text/javascript">
    function shuffle(o) {
        for (var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
        return o;
    }

    function getQuestions(){
        var operators = shuffle(["+", "+", "+", "+", "-", "-", "-", "x", "x", "x"]);
        var a = [1, 2, 3, 4, 5, 6];
        var counter = 0;

        Array.prototype.chooseRandom = function () {
            return this[Math.floor(Math.random() * this.length)];
        };

        while (counter < 10) {
            var op1 = a.chooseRandom();
            var op2 = a.chooseRandom();
            alert(op1 + operators[counter] + op2 + "?")
            counter++;
        }
    }

    getQuestions();
</script>
于 2013-02-19T08:31:34.437 に答える
0

必要な数の を含む配列を作成し+、以下の関数を使用してその配列-*ランダムに並べ替えます。

arr.sort(function() {return 0.5 - Math.random()})
于 2013-02-19T08:03:57.187 に答える