ランダムの確率と種類について

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: poo : 2005/05/13 22:01
こんにちは。
ランダムの文章表示について質問します。
javaは初心者程度の知識しかありません。
調べたところ、少なくとも以下に載せた四つの方法があるとわかりました。
私は「同じ確率」で表示させたいのですが、
これらの確率はどれも同じなのでしょうか?
もし、他の方法やそれぞれ違いなどわかる方がいらしたら説明を頂きたいと思います。
よろしくお願いいたします。

-----------ランダム01--------------
<SCRIPT TYPE="text/javascript">
<!-- var msg = new Array();
msg[0] = 'ランダムサンプル0';
msg[1] = 'ランダムサンプル1';
msg[2] = 'ランダムサンプル2';
msg[3] = 'ランダムサンプル3';
var no = Math.floor(Math.random() * msg.length); // -->
</SCRIPT>

-----------ランダム02--------------
<SCRIPT language="javascript">
<!--
var c=new Array("ランダムサンプル0","ランダムサンプル1","ランダムサンプル2","ランダムサンプル3");
document.write(c[Math.floor(Math.random()*c.length)]);
//-->
</SCRIPT>

-----------ランダム03--------------
<SCRIPT LANGUAGE="JavaScript">
<!-- rand = Math.floor(Math.random()*5);
if (rand == 0) msg = "ランダムサンプル0";
if (rand == 1) msg = "ランダムサンプル1";
if (rand == 2) msg = "ランダムサンプル2";
if (rand == 3) msg = "ランダムサンプル3";
document.write(msg); // -->
</SCRIPT>

-----------ランダム04--------------
<script type="text/javascript">
<!--
rantxt = new Array();
rantxt[0] = "ランダムサンプル0";
rantxt[1] = "ランダムサンプル1";
rantxt[2] = "ランダムサンプル2";
rantxt[3] = "ランダムサンプル3";
xx = Math.floor(rantxt.length * Math.random());
document.write(rantxt[xx]);
// -->
</script>

1   名前:  U D  : 2005/05/13 22:01
サンプルの1,2,4はほぼ同じ内容・方法で、配列を使っています。
3だけIF文で条件分岐しています。

んで、なにで"ランダム"を発生させているかというと、
Math.random() 、マス.ランダム()と読めますね。
読んでまんま、これがランダム源です。(ちなみにマスは数学)
つまりサンプルの2種類のうち、どちらもこれを使ってるので、
これの確立が正しければどの方法でもいいということです。
ちなみに3の方法を応用させれば、故意に確立をずらすことも可能です。

Math.random()の確立を確認するサンプル。
BODYに入れてやってみてください。(5000回振り分けます)
※サイコロを6回振っても1〜6が1回ずつ出ないのと同じで、理想値は1250ですが必ずしもそうなるとは限りません。

<SCRIPT TYPE="text/javascript">
<!--

var a=0;
m=new Array(0,0,0,0);

for(i=0;i<5000;i++){
a=Math.floor(Math.random()*4);//4つの数のランダム
if(a==0){
m[0]++;
}else if(a==1){
m[1]++;
}else if(a==2){
m[2]++;
}else if(a==3){
m[3]++;
}
}
for (i in m){
document.write(m[i]+"<BR>");
}

// -->
</SCRIPT>

2   名前: poo : 2005/05/13 22:01
とても判りやすい説明をありがとうございます!
サンプルも試してみました。
>サイコロを6回振っても1〜6が1回ずつ出ないのと同じ
なるほど…… そういうことだったんですね。
考えもしませんでしたが、確かにその通りです。
新しく気付かせてもらいました。ありがとうございました!

一覧へ戻る