【发布时间】:2013-11-12 23:45:33
【问题描述】:
我正在为 android 编写一个单词学习应用程序。
为了得到我使用的随机词:
Random rnd = new Random();
final int rnd.nextInt(WordsNumber);
为了获得随机方向(显示单词或显示翻译),我使用:
Random rnd = new Random();
final boolean dir.nextBoolean();
但是我明白了,a 单词不是均匀分布的。 我正在用 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 时,它会相等...但对于我的应用程序来说,这是一个糟糕的安慰。
【问题讨论】:
-
很可能是由 Java 等效的 C# - Random number generator only generating one random number 引起的
-
让我想起了this 一个...
-
您多久运行一次测试?重复说同样的话可能只是运气不好。除此之外,它可能是一些意外编程的偏差。
-
您能否发布:a/ 实际代码和 b/ 实际结果(包括数字和所有内容)以验证/支持您的印象?
-
final int rnd.nextInt(WordsNumber);在按钮点击时被调用。好的,我会写一个测试,但稍晚一点(星期一)。