我有使用java.util.Random和2d数组生成0和1的矩阵的foll0wing代码。我想知道是否有办法定义矩阵中每行发生0和1的概率。我希望生成0和1的概率相等。
我想将这个matlab等效代码转换为生成java等价的矩阵。
G= rand(10,20)<.5
有任何想法或建议吗?
谢谢, Bhavya
答案 0 :(得分: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;
}
}
}
这假定默认随机生成器足够好。如果您想要更高的概率1或0,请调整0.5。
答案 1 :(得分:0)
我希望产生0和1的概率相同。
随机并非完全随机,但是,对于这个用例,如果你只是:
,你很可能不会注意到这种差异。Random R = new Random();
int zeroOrOne = r.nextInt() % 2;
之后,您可以创建一个频率表,以查看您运行的样本的实际分布情况。