open_spiel 随笔
------------恢复内容开始------------
------------恢复内容开始------------
遇到的一些疑惑且已经解决的
1. SPIEL_CHECK_GT()诸如此类的函数还有EQ 等
我猜测都是类似java的EQ 就是 EQUAL等于
NE就是 NOT EQUAL不等于
GT 就是 GREATER THAN大于
LT 就是 LESS THAN小于
GE 就是 GREATER THAN OR EQUAL 大于等于
LE 就是 LESS THAN OR EQUAL 小于等于
没找到这些宏定义或者是函数
但是结合代码来看,逻辑是说得通的。
2. Action 类
其实是类型,就是一个64位的int, 定义在 spiel_util.h 文件中
using Action = int64_t;
3. RankActionMixedBase 和 UnrankActionMixedBase
就是将向量转换为 integer,和它的逆过程
定义如下:
1 // Helpers used to convert actions represented as integers in mixed bases.
2 // E.g. RankActionMixedBase({2, 3, 6}, {1, 1, 1}) = 1*18 + 1*6 + 1 = 25,
3 // and UnrankActioMixedBase(25, {2, 3, 6}, &digits) sets digits to {1, 1, 1}.
4 // For the rank, both vectors must be the same size. For the unrank, the digits
5 // must already have size equal to bases.size().
6 Action RankActionMixedBase(const std::vector<int>& bases,
7 const std::vector<int>& digits);
8
9 void UnrankActionMixedBase(Action action, const std::vector<int>& bases,
10 std::vector<int>* digits);
怎么将一个向量转化为一个整数?
代码比较简单
1 // Used to convert actions represented as integers in mixed bases.
2 Action RankActionMixedBase(const std::vector<int>& bases,
3 const std::vector<int>& digits) {
4 SPIEL_CHECK_EQ(bases.size(), digits.size());
5 SPIEL_CHECK_GT(digits.size(), 0);
6
7 Action action = 0;
8 int one_plus_max = 1;
9 for (int i = digits.size() - 1; i >= 0; --i) {
10 SPIEL_CHECK_GE(digits[i], 0);
11 SPIEL_CHECK_LT(digits[i], bases[i]);
12 SPIEL_CHECK_GT(bases[i], 1);
13 action += digits[i] * one_plus_max;
14 one_plus_max *= bases[i];
15 SPIEL_CHECK_LT(action, one_plus_max);
16 }
17
18 return action;
19 }
1 void UnrankActionMixedBase(Action action, const std::vector<int>& bases,
2 std::vector<int>* digits) {
3 SPIEL_CHECK_EQ(bases.size(), digits->size());
4 for (int i = digits->size() - 1; i >= 0; --i) {
5 SPIEL_CHECK_GT(bases[i], 1);
6 (*digits)[i] = action % bases[i];
7 action /= bases[i];
8 }
9 SPIEL_CHECK_EQ(action, 0);
10 }
以下是原理
三个判断要求 base[i] > 1, digits[i] >= 0, base[i] >= digits[i]
生成的整数是一系列的因式和, 而除了第一个因式之外的所有因式都有base[-1](这里的-1表示倒数第一个),又因为digits[-1]<base[-1] 所以取模运算后就是digits[-1]
然后再整除一下,进行上面的操作就可以得到倒数第二个数。
------------恢复内容结束------------
------------恢复内容结束------------
open_spiel 随笔的更多相关文章
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
- C++随笔:从Hello World 探秘CoreCLR的内部(1)
紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 利用Python进行数据分析 基础系列随笔汇总
一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇
<高性能javascript> 领悟随笔之-------DOM编程篇一 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
随机推荐
- [0CTF 2016]piapiapia(反序列逃逸)
我尝试了几种payload,发现有两种情况. 第一种:Invalid user name 第二种:Invalid user name or password 第一步想到的是盲注或者报错,因为fuzz一 ...
- 215。数组中第K个最大元素(堆实现)
class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: """堆排序思想 ...
- IIS目录浏览模式打开文件还是无法下载
写在前面的话 IIS已经设置目录浏览启用,且可以正常访问到文件,说明这些设置没问题,但是点击文件进行下载时,却提示无法下载,文件不存在等等,有的又可以,一顿操作后发现,原来是文件类型没有包含在MIME ...
- Spring 配置文件配置事务
一.引入事务的头文件 xmlns:tx="http://www.springframework.org/schema/tx" http://www.springframework. ...
- Vue编写的页面部署到springboot网站项目中出现页面加载不全问题
问题描述: 在用Vue脚手架 编写出一个页面之后, 部署到后台项目中, 因为做的是一个页面 按理来说 怎么都能够在服务器上运行 , 我也在自己的node环境测试 , 在同学的springboot上运行 ...
- 安装zabbix3.0以及升级到5.0过程
关闭防火墙: systemctl stop firewalld.service systemctl disable firewalld.service 需要关闭 selinux,一定要关闭这个,开启s ...
- 【题解】Computer Network
Description 给你一棵N(N<=10000)个节点的树,求每个点到其他点的最大距离. Input 第一行一个数N.接下来若干行每行两个数k,t描述一条点k到点t的边(输入数据保证无重复 ...
- CentOS 7安装Nginx 1.10.2
安装epel-release源并进行安装 yum install epel-release yum update(时间会有点长) yum install nginx 相关操作: systemctl s ...
- Centos最小化安装后,不能使用yum命令的解决办法
刚刚最小化方式安装了CentOS 7 后,想查看一下config,却发现没有config文件,就想用yum下载一个,但是发现yum不能正常工作!!! 一,输入安装X Window命令,安装出错!! 在 ...
- Centos下Oracle11gR2安装教程与自动化配置脚本
系统环境准备 开发组件与依赖库安装 安装centos时选择Server with GUI,右面的可以不勾选,后面统一来装 配置本地yum源 以上包如果缺乏可配置本地yum源进行安装 sudo moun ...