0~20の数字があります。
1つの数字だけを表示させます。
0以外の全ての数字はランダムに表示します。
0は5回中1回表示させるようにしたいです。
fff(0);
function fff(b){
if(b%5 == 0){
a=0;
}else{
a = Math.floor(Math.random() * 20) + 1;
}
alert(a);
b++;
setTimeout('fff(' + b + ')', 2000);
}
では1~20までの数字がランダムに表示されますが、
0が表示されるタイミングが決まってしまいます。
もっと上手にするためにはどうしたらよいのでしょうか。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>もっと上手にするためにはどうしたらよいのでしょうか。
上手にといっても、『5回中1回』という意味をどう捉えるかによって変わってくるかと思います。
ご提示の方法は必ず5回おきに0が表示されますので、『5回中1回』の典型といえます。
確率的に『5回中1回』でよいのなら、0~4の乱数(整数)を発生させて、0だったら0それ以外は1~20。これだと、0が出ないことが何回も続いたり、連続して0が出る可能性はありますが、十分大きな回数繰り返せば確率的に『5回中1回』。
5回ごとに0~4の乱数を発生し次に0を出す順番を設定するという方法も考えられます。これだと9回以上連続して0が出ないということがなくなります。もちろん『5回中1回』となります。
このような考えを複合したような方法も考えられるとは思いますが、基本的に質問者様の『5回中1回』ということの意味によると思います。
No.3
- 回答日時:
こんな感じかな。
var a = Math.floor(Math.random()*5);
for(var i=0; i<=4; i++){
if(i==a){
alert(0);
continue;
};
alert(Math.floor(Math.random()*20+1));
};
No.4
- 回答日時:
1から20までの、はいれつをよういし、しゃっふるします。
5こかんかくで、そのなかにてきとうに0をそうにゅうします
あとは、はいれつのあたまからとりだす。
はいれつがなくなったら、つくりなおす
function random () {
var ary = [];
function range (a, b) {
var ary =[];
var i;
for (i = a; i <= b; i++) {
ary.push (i);
}
return ary;
}
function randomInt (n) {
return Math.floor (Math.random () * n);
}
function shuffle (ary) {
var len = ary.length;
var i, n, m;
for (i = len; i; ) {
n = randomInt (i--);
m = ary[i];
ary[i] = ary[n];
ary[n] = m;
}
return ary;
}
function ikasama (ary) {
var insertAry = [0,0,0,0];
var len = insertAry.length;
var span = 5;
var i;
for (i = 0; i < len; i++) {
ary.splice (i * span + randomInt (span), 1, insertAry[i]);
}
return ary;
}
function reset () {
ary = ikasama (shuffle (range (1, 20)));
alert(ary);
}
return function () {
if (0 === ary.length) {
reset ();
}
return ary.shift ();
};
}
var next = random ();
setInterval (function () { alert (next ()); }, 1000);
</script>
--
いけてないけど
<script type="application/javascript; version=1.8">
var random = (function ikasama () {
function randomInt (n) Math.random () * n | 0
function range (a, b) { for (; a <= b;) yield a++ }
function shuffle (ary) { let n; while (0 < (n = ary.length)) yield ary.splice (randomInt (n), 1) }
function ikasama (a,b) this.ary.splice (this.span * b + randomInt (this.span), 1, a)
var r;
var ary = [x for each (x in range (1, 20)) ];
var buf = [];
var insertAry = [0,0,0,0];
while (true) {
if (buf.length < 1) {
buf = [x for each (x in shuffle (ary)) ];
insertAry.forEach (ikasama, { ary: buf, span: 5 });
}
yield buf.shift ();
}
}) ();
setInterval (function () { alert (random.next ()); }, 1000);
</script>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2023/01/27 09:05
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) <スプレッドシート>IF関数の複数条件について 5 2022/10/27 14:38
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/18 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
jQuery 同じ処理を関数にまとめ...
-
【jQuery】for文ではイベント登...
-
jQueryの"return false"の役割...
-
jslintのエラーについて質問
-
javaScriptのコードの修正をお...
-
ホームページに日付を自動更新...
-
javascript 特定のタグのidの存...
-
ジェネレーターの作り方
-
ページ離脱時のalertボタンで処...
-
ボタンをクリックすると数が増...
-
Wikipedia APIの結果からタイト...
-
重複しないくじの作り方がわか...
-
javascriptでiframeのURL変更は?
-
jQuery 変数を複数のセレクタ...
-
択一形式のテストをつくりたいです
-
画像のサイズを動的に変更する
-
C#テキストボックスの文字を配...
-
MFCのキャプション変更
-
class名で選択できるようにした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
関数でy=g(x)のgとは何の略です...
-
jslintのエラーについて質問
-
クリックすると上に開くアコー...
-
XMLHttpRequestでキャッシュを...
-
ajax反映後のjqueryが動かない
-
function(e)の意味を教えてくだ...
-
要素名がスペースを含む場合のj...
-
jQueryの :not() .not() が有効...
-
jQueryでzipを解凍読み込みする...
-
関数名をテキストから読み込む...
-
getElementByIdを使用したグロ...
-
jqueryuiのdialog
-
jqueryのグローバル変数とロー...
-
jQuery 同じ処理を関数にまとめ...
-
XMLHttpRequestオブジェクトが...
-
addEventListener()でリスナー...
-
drawImageの描画順序の指定につ...
-
javascript(jQuery)でセル内...
おすすめ情報