我有一个矩阵,我想随机化几千次,同时保持行和列总数相同:
1 2 3
A 0 0 1
B 1 1 0
C 1 0 0
Run Code Online (Sandbox Code Playgroud)
有效随机矩阵的一个例子是:
1 2 3
A 1 0 0
B 1 1 0
C 0 0 1
Run Code Online (Sandbox Code Playgroud)
我的实际矩阵要大得多(大约600x600项),所以我真的需要一种计算效率高的方法.
我的初始(低效)方法包括使用Perl Cookbook shuffle改组数组
我在下面粘贴了我当前的代码.如果在while循环中找不到解决方案,我已经有了额外的代码来启动一个新的洗牌数字列表.该算法适用于小矩阵,但只要我开始按比例放大,就需要永远找到符合要求的随机矩阵.
有没有更有效的方法来完成我正在寻找的东西?非常感谢!
#!/usr/bin/perl -w
use strict;
my %matrix = ( 'A' => {'3' => 1 },
'B' => {'1' => 1,
'2' => 1 },
'C' => {'1' => 1 }
);
my @letters = ();
my @numbers = ();
foreach my …Run Code Online (Sandbox Code Playgroud)