MIT App Inventor 2で、ブロック編集の中にある数字のなかに整数の乱数と言うのがあります。
上の場合1から100までの整数をランダムに1つ選んでくれる。
1つだけ整数を選ぶ場合はこれで十分なのですが、続けていくつも整数を選びたいときに、自分では困ってしまうことがあります。
ランダムですから、前の整数に影響されないで次の整数を選ぶ。だからたまたま前の整数と同じ整数を選ばれてしまう場合がある。
5を選んだ次に選んだ整数がまた5である場合が出てきます。
ランダムですからしょうが無い・・・。
同じ整数が連続して選ばれない方法が無いかなと考えていましたが、modだよなってことになりました。
0から9までの10個の整数から数字を選ぶとき前回選んだ整数とは同じ整数は選ばないようにブロックで書いてみました。
1からではなく0からでないと上手く働きません。
注:ボタン1より下に書いてあるのは、出てきた整数を順番に羅列させるプログラムですので、今回のこととは関係ありません。
メインになるところは、
”0から9までの10個の整数のうち、前回選ばれていた整数に1から9までの整数のうちランダムに選んだ整数を足して、それを10で割ったときの余りを、次の整数にする”
というプログラムになっております。
(選ぶ整数の開始は0から、加える整数をランダムに選ぶときは1から、割る数は選ぶ整数範囲の個数、今回なら10個)
これで、0から9の整数をランダムに続けてに選んでも、同じ数が連続することはありません、多分。
リストから前から何番目を選ぶなんて言うときには、上のプログラムで選ばれた整数に1を足して、リストの1番目から10番目までから選ぶことが出来ます。
リストにも要素をランダムに選ぶブロックがありますが、同じ要素を続けて選ぶ場合があります。
自分のアプリでは続けて同じ整数を選ばないプログラムを使い整数を1つ決めてから、リストのその整数番目の要素を選ぶようにしています。
プログラムやる人たちはどのように書いているのだろう?