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

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(使用前将#替换为@)

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

  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • WAMP PHP 启动错误:无法加载动态库

    我的 WAMP 服务器昨天工作得非常好 今天我不得不重新启动计算机 但有些事情搞砸了 服务器从未完全启动 任务栏图标保持橙色 我的项目将打开 但仅加载 HTML 而不加载 PHP 这是我的 PHP 错误日志 04 Oct 2014 01 3
  • 验证项目是否在开始日期和结束日期内

    我有一个java程序 它将检查每个项目的开始日期和结束日期 每个项目必须有自己特定的开始日期和结束日期范围 如果新的开始日期和结束日期的范围落在旧的开始日期和结束日期内 系统将提示错误消息 例如 Company ABC Item Numbe
  • 确定 PHP 到目前为止执行了多长时间

    我需要确定 PHP 函数到目前为止已经运行了多长时间 有哪些选项可以确定某些 PHP 代码的运行时间 我正在使用 zend 框架 Call microtime true 函数以毫秒分辨率获取当前时间
  • 统计数据库中的注册用户数

    我想反映在我的网站上注册的人数 只有我拥有的代码不起作用 它让我知道它不可能 转换为字符串 另外 当我将其设置为在 HTML 中调用的函数时 我收到 connection 未定义的错误 require once connect php sq
  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • C 中的数组地址减法[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的指针算术 https stackoverflow com questions 759663 pointer arithmetic in c Code int main int a 0 1 2
  • Symfony2 实体字段在选项为空时显示所有条目

    我的 Symfony2 项目中有一个实体类型表单字段 builder this gt createFormBuilder projects this gt getProjects builder gt add project entity
  • 将数组分配给数组

    所以我正在尝试一些数组 但我不明白为什么这不起作用 int numbers 5 1 2 3 int values 5 0 0 0 0 0 values numbers 出现以下错误 Error 1 error C2106 left oper
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • 如何在 C# 中将 BigInteger 转换为 pow Double?

    我尝试使用BigInteger Pow计算类似 10 12345 987654321 的方法 但此方法只接受整数作为指数 如下所示 BigInteger Pow BigInteger x int y 那么如何在上述方法中使用双数作为指数呢
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • Mac OSX 10.7.4,Xcode 4.4.1,没有 头文件?

    我正在编写一个程序 它将使用 C 标准库的数组容器来保存一些对象 但是 每当我尝试在程序中包含以下代码行时 include
  • 如何处理致命错误:cURL错误7:无法连接到xxxx端口443

    我有一个连接到第三方 API 的脚本 它是并且应该在 24 7 不间断循环上运行 我在重新启动循环之前在最后使用睡眠 问题是 有时第三方 API 会被拒绝 或者连接会因以下错误而中断 致命错误 未捕获的异常 GuzzleHttp Ring
  • 如何下载临时文件

    我正在尝试创建一个简短的 PHP 脚本 该脚本采用 JSON 字符串 将其转换为 CSV 格式 使用fputcsv 并使该 CSV 可作为下载的 csv 文件使用 我的想法是使用tmpfile 不用担心 cronjobs 或磁盘空间不足 但
  • 验证 LDAPS 连接的自签名证书

    我想从 Linux Linux 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 客户端到 Windows 2012 服务器建立安全的 ldap 连接 ldaps 以更改活动中的用户密
  • MySQL如何从多个表中获取数据

    我正在寻找 php MySQL jquery 的帮助 我有2张桌子 table1表 1 有 4 列 id 标题 desc thumb img tabel2表 2 有 3 列 id 表 id img 我只想将 2 个表与 get QS 的值进
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 无法访问 WordPress 中声明的全局变量

    我有以下代码 g value something print g value function get value global g value print g value print get value 当我在独立的 PHP 脚本中运行它
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可

随机推荐

  • 在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 配对 但我想保证 下次我这样做时 我会