这是我的设置。 在曲棍球比赛中,选手们形成了“线”,它们同时在冰上。 “前进”线是左翼,中翼和右翼的三重奏。 “ D”线是一对左D和右D。在啤酒联赛中,您通常穿着13个溜冰者= 3条前进线,2条D线和一条守门员。

假设我有20个人想玩。 我想从13个随机滑冰者那里划定界线。 我必须保留他们的名字和球衣号码。 我想知道这是否是Chapel Domains的工作。 例如,类似

var player_ids: domain(1) = {1..20}
var jerseys [player_ids] = [71, 99, 97, ...]
var names [player_ids] = ['Alice', 'Bonobo', 'Changarakoo'...]

这是一个简单的想法,但现在我想

1. Pick three random players and assign them to Line 1 F
2. Pick three from the remainders and assign the to Line 2 F
...
n-1: Use the player ids to create an indicator matrix (details aren't important)
n: WIN!

n-1的要点是,我必须能够在最后引用球员ID和球衣号码。

教堂的正确模式是什么?

#1楼 票数:2

啤酒曲棍球队教练
可以使用这个概念

( live >>> online ) (当然,数字会有所不同,未设置固定的RNG种子)

让我们更深入地了解该过程。 随机选择是故事中数学上最困难的部分(在这种情况下,合规性会使问题更复杂,而不是教练本身(参见下文))。

因此,让我们接受“团队设置”是静态地图,其中玩家的序号映射到F_line{1..3,1..3}, D_line{1..2,1..2}, G, Rest{1..7}

use Random;
var              aRandomTEAM = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ]; // a known, contiguous ENUM of <anonymised_HASH_ID#s>
    permutation( aRandomTEAM );                                                                           // a known, static MAP of aRandomTEAM -> F_line{1..3}, D_line1{1..2}, G, Rest
for                          id in {1..13}{
    writeln(                   "            a Static MAP position of TEAM[",
                             id, "]: will be played by anonymised_HASH_ID#( ",
                 aRandomTEAM[id],                                         " )"
             );
    }

对于人类可读的检查,这将产生:

a Static MAP position of TEAM[1]: will be played by anonymised_HASH_ID#( 20 )
a Static MAP position of TEAM[2]: will be played by anonymised_HASH_ID#( 5 )
a Static MAP position of TEAM[3]: will be played by anonymised_HASH_ID#( 11 )
a Static MAP position of TEAM[4]: will be played by anonymised_HASH_ID#( 4 )
a Static MAP position of TEAM[5]: will be played by anonymised_HASH_ID#( 15 )
a Static MAP position of TEAM[6]: will be played by anonymised_HASH_ID#( 7 )
a Static MAP position of TEAM[7]: will be played by anonymised_HASH_ID#( 16 )
a Static MAP position of TEAM[8]: will be played by anonymised_HASH_ID#( 12 )
a Static MAP position of TEAM[9]: will be played by anonymised_HASH_ID#( 8 )
a Static MAP position of TEAM[10]: will be played by anonymised_HASH_ID#( 18 )
a Static MAP position of TEAM[11]: will be played by anonymised_HASH_ID#( 19 )
a Static MAP position of TEAM[12]: will be played by anonymised_HASH_ID#( 17 )
a Static MAP position of TEAM[13]: will be played by anonymised_HASH_ID#( 3 )

但是,机器可读的后处理可能会将它们映射到请求的数组上,使敏感的个人详细信息保持安全和独立,并使GUUID#参考链接链接到名称中,并确保所有其他详细信息安全。 参照完整性既便宜又安全,并且从(有意)连续的序数到代理匿名的HashTable的静态唯一关联映射的实现是微不足道的(有关可能的进一步启发,请参见不透明域和数组)。


法律警告:

如果在受监管的领域中使用随机化,则应格外小心,在这种领域中,必须记录符合性,并进行和验证方法稳健性的正面证据。

文档可能会提供更多有关在某些法律要求严格的领域中使用当前随机化实现方式的已知风险的详细信息:

置换线性同余随机数生成器

该模块提供PCG随机数生成例程。 参见http://www.pcg-random.org/和论文,《 PCG:ME O'Neill生成随机数的简单快速,空间高效的统计上好的算法》。

应该特别注意一些已知的潜在限制,例如:

注意

对于整数,此类使用一种策略生成特定范围内的值,该值尚未经过严格研究,并且可能存在统计问题。

对于实数,此类通过计算[0,1]中的随机值并缩放和移动该值来生成[max,min]中的随机值。 请注意,并非可以以这种方式构造间隔[min,max]中所有可能的浮点值。

此类说明应始终引起合规官的注意,以便在其预期的(受监管的)问题域强制性实践和受控环境的要求之内仔细预先验证其使用的可行性。

#2楼 票数:2 已采纳

这是我的建议。 为了吸引玩家而不进行替换,我从概念上考虑改组一副纸牌-每张纸牌上都印有玩家的名字。 因此,此代码使用Random.shuffle

use Random;

var player_ids = {1..20};
// jersey number, name are simply keyed off off player_id

// Generate an array of player IDs
var ids_array = [i in player_ids] i;

// Randomly shuffle player IDs
shuffle(ids_array);

// Now select from the shuffled IDs the players for the game.

var cur = 1;
getLine(cur, "Forward1", 3, ids_array);
getLine(cur, "Forward2", 3, ids_array);
getLine(cur, "Forward3", 3, ids_array);
getLine(cur, "D1", 2, ids_array);
getLine(cur, "D2", 2, ids_array);
getLine(cur, "Goalie", 1, ids_array);

proc getLine(ref curIndex, lineName, playersNeeded, ids_array) {
  writeln("Line ", lineName, ":");
  for i in 1..playersNeeded {
    writeln("  player ", ids_array[curIndex]); // would use name & jersey..
    curIndex += 1;
  }
}

  ask by Brian Dolan translate from so

未解决问题?本站智能推荐:

1回复

Chapel中的分布式关联域

是否有任何关于Chapel中关联域和/或不透明域的分布式域映射的工作示例,或者有关如何在多个语言环境中分布非矩形结构(如图形)的任何提示? 我知道分布式稀疏数组,但我看的是结构较少的数据。 该文档提到了关联域的原型域映射 - 它可以在任何地方进行实验吗? 谢谢。
1回复

如何在Chapel中附加稀疏域

我在Chapel中填充一个稀疏数组,其循环正在读取CSV。 我想知道最好的模式是什么。 这是一种有效的方法吗? 我应该创建一个临时的元组数组,并每隔(比方说)10,000行附加spsDom吗? 谢谢!
2回复

Chapel:你能重新索引一个域吗?

一位伟人曾经说过,我有一个矩阵A 。 但这一次她有一个朋友B 像 Montagues 和 Capulets 一样,他们有不同的领域。 我的猜测是我需要重新索引,以便B.domain是{1..10, 1..10} 。 由于 B 是一个输入,我得到了编译器的推回。 有什么建议?
2回复

Chapel中的回调函数

我有以下教堂代码。 我想向dynamics发送某种回调,比如 这可能吗? 有我可以浏览的示例吗?
1回复

Chapel中的增量编译

我一直在用小程序学习Chapel,他们工作得很好。 但随着程序变得越来越长,编译时间也变得越来越长。 所以我找到了逐个编译多个文件的方法,但还没有成功。 通过搜索互联网,我找到了这个和这个页面,后者说 所有这些增量编译功能都在Chapel编译器中使用新的--incremental标志
2回复

如何在Chapel的域上进行就地扩展

Chapel中的expand命令返回一个新域。 我想将域名增加一点
1回复

Chapel域:`low/high`和`first/last`方法之间的差异

Chapel域有两组方法 和 什么是这些返回不同结果的各种情况(即何时是domain.first != domain.low和domain.last != domain.high ?
1回复

Chapel中的共享记忆n体仿真

我正在尝试重新实现Peter Pacheco在“并行编程简介”第6.1.6章中介绍的n-body仿真的共享内存实现。 在该章中,它是使用OpenMP实现的。 这是我使用OpenMP的并行实现。 这是使用Chapel的串行实现。 我在使用Chapel实现共享内存并行实现时遇到问题。 由