小编Luc*_*cas的帖子

在perl中随机化矩阵,保持行和列总数相同

我有一个矩阵,我想随机化几千次,同时保持行和列总数相同:

     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)

random perl matrix

11
推荐指数
2
解决办法
1473
查看次数

标签 统计

matrix ×1

perl ×1

random ×1