gpt4 book ai didi

java - Android:随机数不是很随机

转载 作者:搜寻专家 更新时间:2023-11-01 08:55:03 25 4
gpt4 key购买 nike

我正在为 android 编写一个单词学习应用程序。

为了得到我使用的随机词:

Random rnd = new Random();
final int rnd.nextInt(WordsNumber);

为了获得随机方向(显示单词或显示翻译),我使用:

Random rnd = new Random();
final boolean dir.nextBoolean();

但是我看到,一个词并不是均匀分布的。我正在用 17 个单词测试应用程序。有些词显示 10 次,有些只显示一次。同样的问题是方向。它经常发生,连续第五次方向相同。

也许有人知道,如何让词的分布更平均?

更新:我写了一个测试应用程序。它在点击按钮时生成新数字:

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);
}
}

测试结果如下:enter image description here

也许,当 N=10000 时,它会相等......但对于我的应用程序来说,这是一个可怜的安慰。

最佳答案

你所做的应该给你非常均匀的伪随机分布。
你可以运行你的采样,比如 1000 次,然后计算每个结果最终出现的频率。应该是差不多的。否则,请发布更多导致问题的代码。

更新为了说服自己,请尝试在您的平台上运行下面的简单测试并检查观察到的结果。 testNum 越大,您获得的结果就越统一。

        final int testNum = 10000;
final int max = 9; // will generate integers in range [0 ; 9]
Random rnd = new Random();
int[] results = new int[max + 1];

for (int i = 0; i < testNum; ++i) {
int nextRandomNumber = rnd.nextInt(max + 1);
results[nextRandomNumber]++;
}

// print statistics
System.out.println("tests performed = " + testNum);
for (int i = 0; i <= max; ++i) {
System.out.println("frequency of " + i + " is "
+ results[i] * 100 / testNum + "%");
}

关于java - Android:随机数不是很随机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19732456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com