我正在为 android 编写一个单词学习应用程序。
要获得随机单词,我使用:
Random rnd = new Random();
final int rnd.nextInt(WordsNumber);
要获得随机方向(显示单词或显示翻译),我使用:
Random rnd = new Random();
final boolean dir.nextBoolean();
但我看到,一个词不是均匀分布的。我正在用 17 个单词测试应用程序。有些单词显示 10 次,有些单词只显示一次。同样的问题是方向。它经常发生,连续第五次方向是相同的。
也许有人知道,如何使单词的分配更加平等?
UPD:我写了一个测试应用程序。它在按钮单击时生成新数字:
public class About extends Activity
{
final int N = 10;
int[] results;
Random rnd;
int total;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
results = new int[N];
for (int i = 0; i < N; i++)
{
results[i] = 0;
}
rnd = new Random();
total = 0;
}
public void GenerateNumber(View view)
{
int number = rnd.nextInt(N);
results[number]++;
total++;
String output = new String();
TextView txt = (TextView)findViewById(R.id.text1);
output += "Total numbers: " + String.valueOf(total) + "\n";
for (int i = 0; i < N; i++)
{
output += String.valueOf(i) + ": " + String.valueOf(results[i]) + "\n";
}
txt.setText(output);
}
}
以下是测试结果:
也许,当 N=10000 时,它会是相等的……但对于我的应用程序来说,这是一个糟糕的安慰。