从数组中访问唯一值对而无需重复自己

2024-01-09

我正在尝试访问unique以随机顺序从数组中获取值对 - 在必要之前不重复自己。

例如,如果我有一个数组集 A、B、C、D(通常为偶数个项目,但最多 20 个),那么第一次通过时我可能会将 A-B 和 C-D 配对。但我想保证,下次我这样做时,我会避免重复配对,并且在再次获得 A-B 和 C-D 之前,我会同时获得 A-C 和 B-D 以及 A-D 和 B-C。每个项目在每一轮中只能被调用一次。

我首先随机打乱数组的顺序,然后将两个值配对在一起 - 但我需要一种方法来防止某些配对比其他配对更频繁地发生(理想情况下,我希望它们自始至终均等地递增)。

因此,我开始研究排列 - 并设法使用以下代码获得包含所有可能配对的完整数组:

    $this->items = array('A','B','C','D');

    $input = $this->items;
    $input_copy = $input;
    $output = array();
    $i = 0;
    foreach($input as $val) {

        $j = 0;
        foreach($input_copy as $cval) {
            if($j == $i) break;
            print $val.'-'.$cval.'<br/>';
            //$output[] = array($val => $cval);
            $j++;
        }
        $i++;
    }

    //print_r($output);

例如对于 A、B、C、D 我得到:

b-a
c-a
c-b
d-a
d-b
d-c

我想循环遍历集合 n-1 次并捕获另一个数组中的结果,但我不确定如何从这些独特的选项生成实际顺序

换句话说,我想将上面的列表变成下面的:

1st run =>
    1=> A-B, 
    2=> C-D, 
2nd run =>
    1=> A-C, 
    2=> B-D,
3rd run =>
    1=> A-D, 
    2=> C-B,

也许我可以通过 $this->items 更简单地做到这一点。我还查看了 Math_Combinatorics PEAR 包,但我不知道从哪里开始。

我将不胜感激任何帮助!


您可以使用循环赛比赛算法 http://en.wikipedia.org/wiki/Round-robin_tournament

Place elements in two rows. 
Fix one element - in this case A
For next round shift all other elements in circular manner. 
Pair them. 
Repeat N-1 times

A B
D C
-----
A D
C B
----
A C
B D
----
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从数组中访问唯一值对而无需重复自己 的相关文章

  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • 如何使用 Facebook SDK API 为页面/网址“点赞”?

    我正在使用这段代码 facebook gt api me likes post array url gt http www google com 我收到以下错误 Fatal error Uncaught OAuthException 200
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 如何在 PHP 中使用 cURL 发出同时包含 GET 和 POST 参数的请求?

    其他人已经问过如何从 perl java bash 等执行此操作 但我需要在 PHP 中执行此操作 并且我没有看到任何已提出的专门与 PHP 相关的问题 或包含 PHP 的答案 My code ch curl init url curl s
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • WordPress 插件中的类自动加载器

    我想编写一个类自动加载器以在 WordPress 插件中使用 该插件将安装在多个站点上 我想尽量减少与其他插件发生冲突的机会 自动加载器将是这样的 function autoload name some code here 我的主要问题是
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 比较数组中的文件、从文本文件中删除行、函数、日志记录

    所以我创建了这两个数组 Approved Shares 和 Current Shares Reads Approvedshare txt and makes the txt file into an array public objFSO
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入

随机推荐

  • 在R中使用fromJSON读取json文件时出错

    我在使用读取 json 文件时遇到问题jsonlite fromJSON 它显示错误消息如下 fromJSON file jsonfile names 1 中的错误 意外字符 N 这是一个问题NaNjson 文件中的值 如果我删除或更改所有
  • Django 模板的依赖文件放在哪里?

    我的 Django 模板使用了很多相关的东西 图像 样式表等 我应该把这些文件放在哪里 或者我应该如何在模板本身中引用它们 目前我正在使用开发服务器 我知道这是很常见的事情 但我无法真正弄清楚 我把它们放在一个名为的文件夹中static 位
  • 如何更改 Castor 映射以从 XML 输出中的元素中删除“xmlns:xsi”和“xsi:type”属性?

    如何更改 Castor 映射
  • Excel 公式优化

    我不是 Excel 专家 经过一些研究 我想出了这个公式来查看不同时间的两组相同数据 然后 它会显示最新数据列表中但不在旧列表中的新条目 这是我的公式 IF ROWS L 4 L8 lt SUMPRODUCT ISNA MATCH E 1
  • ViewModel 中的 INotifyPropertyChanged 与 DependencyProperty

    在模型 视图 视图模型架构 WPF 应用程序中实现 ViewModel 时 如何使其可数据绑定似乎有两个主要选择 我见过使用的实现DependencyProperty对于视图将要绑定的属性 我已经看到 ViewModel 实现INotify
  • 将参数传递给 jQuery“加载”

    我的页面上有一些脚本 divMenuHolder load menu html 不过 我还需要能够传递一些在 menu html 页面上起作用的参数 我尝试过以下方法 divMenuHolder load menu html opt1 te
  • 无需离开页面/网站即可提交外部表单

    我在网站上查找了这个问题的答案 但没有找到我需要的东西 这很接近 除了它实际上没有提交表单 防止表单重定向或提交时刷新 https stackoverflow com questions 1263852 prevent form redir
  • 全屏显示窗口

    如何在全屏播放电影时显示窗口而不退出电影播放器 的全屏模式 我只是想让窗口出现在电影的顶部 我知道这是可能的 因为雅虎信使每次显示皮尔逊已登录或退出时都会执行此操作 并且我确信还有其他程序也可以执行此操作 但我现在不记得了 它可以在 C C
  • Laravel - 使用外部请求时 POST 数据为空

    我是 Laravel 的新手 我正在尝试实现一个简单的 REST API 我已经实现了控制器 并通过单元测试进行了测试 我的问题是 POST 请求 通过测试 Input json 有数据 通过外部 REST 客户端返回 null 这是单元测
  • 使用m2e插件在eclipse中Maven项目依赖错误(适用于maven)

    我正在 eclipse 中使用 m2e 插件开发 java maven 项目 我更新了我的系统 我的jvm从icedtea bin 6 1 11 4更新到icedtea bin 6 1 11 5 Eclipse 现在在我的 pom 文件中输
  • 学习 UI 和网站设计设计 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么没有与unicode“箭头指向右侧然后向上弯曲”等效的向左指向?

    AFAICT 来自http unicode table com en sets arrows symbols http unicode table com en sets arrows symbols 没有与 unicode 等价的从左向上
  • 创建像 C# 属性一样的 javascript 属性

    是否可以在 javascript 对象上创建一个行为类似于 C 中的属性的属性 例子 我使用 dojo 创建了一个自动调整大小的文本区域小部件 为了从我的小部件中获取 value 属性 我连接了 onchange 事件 并且每次文本区域的值
  • 适用于 HEVC 的 Android MediaCodec

    我正在研究使用 android MediaCodec 类来解码 HEVC 有这样做的项目示例吗 目前我使用以下配置解码器 AMEDIAFORMAT KEY MIME video hevc AMEDIAFORMAT KEY MAX HEIGH
  • 使用 iPhone SDK 中的 MFMailComposer 附加纯文本文件

    我一直在尝试使用 MFMailComposer 发送其中包含加密数据的文本文件 问题是当电子邮件到达收件箱时我的附件永远不会显示 相反 一行 br br 总是存在 我假设这与 mime 类型有关 并且接收者邮件服务器不知道如何读取数据 但我
  • C++ 读取缓冲区大小

    假设该文件的长度为 2又 1 2 块 块大小为 1024 aBlock 1024 char buffer new char aBlock while myFile eof myFile read buffer aBlock do more
  • 如何与表单一起验证和创建相关对象

    我试图在使用表单创建对象基础对象时验证相关对象 ForeignKey 相关对象可能存在也可能不存在 下面我使用 MPTT 但这是一个一般的外键问题 我有一个这样的模型 model class MyMPTTModel models Model
  • 为什么 cython 内存视图不能被 pickle?

    我有一个使用内存视图数组的 cython 模块 即 double foo 我想使用多处理并行运行该模块 但是我收到错误 PicklingError Can t pickle
  • 在 c++/c++11 中测试“POD-ness”?

    我有一些代码 它采用打包的 POD 结构 类并将其复制到内存块中 struct A int a int b a memcpy mymemoryblock void a sizeof A later I get a reply and mem
  • 从数组中访问唯一值对而无需重复自己

    我正在尝试访问unique以随机顺序从数组中获取值对 在必要之前不重复自己 例如 如果我有一个数组集 A B C D 通常为偶数个项目 但最多 20 个 那么第一次通过时我可能会将 A B 和 C D 配对 但我想保证 下次我这样做时 我会