秘密基地、どこに作った?

プログラミング歴半年の初心者です。
よろしくお願いします。

Randomメソッドを使って、1か2のどちらかが出る
と言うプログラムを作成したんですが、
例えば「1が出る確率が20パーセント」で
「2が出る確率が80パーセント」というように
変更したいのですが、どうしたらいいんでしょうか?
本来なら1と2の出る確率は50/50のを
20/80とかに変更したいということです。

どなたかご存知の方がいらっしゃったら
よろしくお願いします。

A 回答 (4件)

つまりこういうことでしょうか?


1から2ならば2,1から6ならば6と入力すると
20回試行するようにしました。

import java.io.*;

public class Sample280{
public static void main(String[] args){
System.out.println("数字を入力してください。1-10");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
int k=Integer.parseInt(str);

for(int j=0;j<20;j++){

int i=(int)(Math.floor(Math.random()*k)+1);


if(i<k){System.out.println("k="+i);}
else{System.out.println("k="+k);}
}
}catch(IOException e){ System.out.println("I/Oエラー"); }


}
}
    • good
    • 1
この回答へのお礼

ありがとうございます。とても参考になりました。
私も早くjavaマスターしたいです!

お礼日時:2006/06/29 15:20

2が80%の例です。

設定の変更はご自分でどうぞ。

public class RandomInt{
public static void main(String []args){
int x = 0;
StringBuffer sb01 = new StringBuffer();
StringBuffer sb02 = new StringBuffer();
for(int i = 0; i < 10; i++){
double y = Math.random();
if(y < 0.8){
x = 2;
sb02.append("* ");
}else{
x = 1;
sb01.append("* ");
}
}

System.out.println("01: " + sb01.toString());
System.out.println("02: " + sb02.toString());
}
}

この回答への補足

どうもありがとうございます。コード助かりました。
ついでにお聞きしたいんですが、出る数がわからない場合
はどうしたらいいんでしょう?例えば出るのが1と2、
1から4、1から6などクライアントから設定できる場合、さらにクライアントからそれぞれの確率も設定出来る場合はどうしたらよいのでしょう?
教えていただけると助かります。

補足日時:2006/06/28 16:27
    • good
    • 0

1.Math.random()で0から9をランダムに出力させる。


2.例えば0から7だったら2を出力し8or9ならば1を
 出力する。そうすれば2が出る確率が80%になる。

この回答への補足

ありがとうございます。もう一つ質問させて
もらってもいいでしょうか?
この場合は、はじめから1か2の2つの可能性があると
分かっているけれど、もしクライアントが 
1)いくつの可能性があるか(例えば1から6までとか)
2)それぞれの出る確率(全部で100%になる)
を設定できるクラスを作った場合は
どうすればいいのでしょう?
図々しくてごめんなさい。
もしご存知だったら教えてもらえますか?

補足日時:2006/06/28 14:34
    • good
    • 0

偏った乱数を作りたければラップして使えば良いでしょう。


例えばRandomから0から99までの一様乱数を取り出して20未満なら1、20以上なら2を返すようなメソッドを作れば良いです。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報