Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 随机性水平_Java_Arrays_Math_Random - Fatal编程技术网

Java 随机性水平

Java 随机性水平,java,arrays,math,random,Java,Arrays,Math,Random,我的目标是随机洗牌一个数组(从0到9),但每个数字只能在数组中出现一次。我有两个(有效的)想法,但我想知道这个random2方法需要迭代多少次才能达到与第一个方法(random1)相同的随机性水平 import java.util.Random; 课堂随机化{ 静态随机r; 最终静态积分=10; 公共静态void main(字符串[]args){ r=新随机数(); int[]数组=新的int[10]; 随机1(阵列); 随机化2(数组、i操作); } 静态void random1(int[]数

我的目标是随机洗牌一个数组(从0到9),但每个数字只能在数组中出现一次。我有两个(有效的)想法,但我想知道这个random2方法需要迭代多少次才能达到与第一个方法(random1)相同的随机性水平

import java.util.Random;
课堂随机化{
静态随机r;
最终静态积分=10;
公共静态void main(字符串[]args){
r=新随机数();
int[]数组=新的int[10];
随机1(阵列);
随机化2(数组、i操作);
}
静态void random1(int[]数组){
对于(int i=0;i对于(int i=0;i如何为数组的每个元素分配一个随机数,按顺序排列随机数,并按该顺序读取分配给该随机数的数组元素

0.64342 0
0.95229 1
0.23047 2
0.82793 3
0.19014 4
0.18528 5
0.15684 6
0.99546 7
0.54524 8
0.90612 9
命令


现在以随机顺序从0到9回答您的原始问题:“此random2方法必须迭代多少次才能在数组中达到与第一个方法相同的随机性水平?”

答案是:它永远不会达到同样的随机性水平

对于任何被交换的位置,它到达任何位置的几率都是相等的,这意味着有10%的几率它会回到开始的位置

在每次迭代中,交换2个数字(如果数字交换到自己的位置,则为零)。这意味着在1次迭代后,任何给定的位置都有80%的几率从未被交换。在N次迭代后,它仍然有0.8^N的几率从未被交换。如果它被交换,有10%的几率回到它开始的位置。因此,任何给定的数字位于其开始位置的概率为10%+0.8^N。这是s总是>10%,因此您永远不会得到完全均匀的分布


例如,对于你选择的10次迭代,每一个数字有10.7%的几率没有移动,或者总共有19.7%的几率处于起始位置。因此,10次迭代甚至不够。也许你应该使用。我不理解你的“双重随机性”的目的-ness。如果第一个方法为每个元素分配一个随机数,那么在第二个函数中对它们进行洗牌会有什么额外的好处?我想,你可以简单地在数组中分配0到9的数字,然后对其进行洗牌。可能重复:除了我的方法之外,我不想使用任何特殊的方法。这是一个值得考虑的好主意正在尝试。谢谢:)这是我一直在寻找的anwser。谢谢:)
0.64342 0
0.95229 1
0.23047 2
0.82793 3
0.19014 4
0.18528 5
0.15684 6
0.99546 7
0.54524 8
0.90612 9
0.15684 6
0.18528 5
0.19014 4
0.23047 2
0.54524 8
0.64342 0
0.82793 3
0.90612 9
0.95229 1
0.99546 7