2012-02-04 52 views
1

我使用下面的代码来使用java.util.Random和2d数组生成0和1的矩阵。我想知道是否有方法来定义矩阵中每行发生0和1的数量的概率。我想要产生0和1的概率相等。在java中生成0和1的矩阵,同时选择概率

我想转换这个matlab等效代码来生成一个矩阵到java等价物中。

G= rand(10,20)<.5 

任何想法或建议吗?

感谢, 巴维亚

回答

1

没有使用数字填充阵列的预定义方法,但是您需要对每个元素进行填充并为其指定编号。类似这样的:

Random random = new Random(); 

for (int outerIndex = 0; outerIndex < matrix.length; outerIndex++) { 
    for (int innerIndex = 0; innerIndex < matrix[outerIndex].length; innerIndex++) { 
     if (random.nextDouble() < 0.5) { 
      matrix[outerIndex][innerIndex] = 1; 
     } else { 
      matrix[outerIndex][innerIndex] = 0; 
     } 
    } 
} 

这假定默认的随机发生器足够好。如果您希望1s或0s的概率更高,请调整0.5。

0

我想有两种生成0和1的概率相等。

随机不是完全随机的,但是,对于这种使用情况下,你是不太可能发现其中的差别,如果你只是:

Random R = new Random(); 
int zeroOrOne = r.nextInt() % 2; 

之后,您可以创建一个频率表,看看实际分布在无论你运行多少样本。