0

Javaで必要な確率で配列文字列のリストからランダム文字列を生成しようとしています.ランダム文字列を生成できますが、確率をどうするかわかりません.プログラムをほぼ25〜30回実行する必要があります

Probability for abc is 10%
           for def  is 60%
           for ghi is  20%
           for danny is 10%

しかし、私はこれを行うことができません。

 import java.util.*;

public class newyork
{
public static void main(String[]args) throws Exception
{ 
  // othr fun
    public static  void abc()
    {
    //Strings to display
        String [] random = {"abc","def", "ghi","danny"};
   //Pick one by one
        String no1= random[(int) (Math.random()*(random.length))];
        String no2 = random[(int) (Math.random()*(random.length))];
        String no3 = random[(int) (Math.random()*(random.length))];

  //print randomly generated strings
       System.out.println("Here you go : " +  no1 + " " +  no2 + " " + no3 + ");
    } 
4

3 に答える 3

2

基本的に、確率を使用するには、100 を含まない 0 から 100 の間の乱数を生成します。

次に、各文字列を順番にテストし、確率を追加します。

String s;
if (number < 10) {s = "abc";}
else if (number < 70) { s = "def";}
else if (number < 90) {s = "ghi";}
else {s = "danny";}
于 2012-11-07T18:48:42.763 に答える
2

擬似コード:

Generate a random integer n between 0 and 9
if (n==0)        return "abc"
else if (n <= 6) return "def"
else if (n <= 8) return "ghi"
else             return "danny"

これを行うには多くの方法があります

于 2012-11-07T18:49:08.447 に答える
1

これはおそらく最善の解決策ではありません。

int number = (int) Math.random() * 100;
String myString;
if(number <= 10)
     myString = "abc";
else if(number <= 20)
     myString = "danny";
else if(number <= 40)
     myString = "ghi";
else
     myString = "def";

したがって、0 : 10 からは abc が返され、10 : 20 では danny が返され、20 : 40 では ghi が返され、40 : 100 では def が返されます。この解決策は、複数の文字列/パーセンテージを使用すると恐ろしいものになり、これを行うにはもっと良い方法があると確信していますが、思い出せません (私の舌先にあります)。

于 2012-11-07T18:49:01.117 に答える