首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建每个索引都有一个随机数的数组?

如何创建每个索引都有一个随机数的数组?
EN

Stack Overflow用户
提问于 2022-05-23 14:22:17
回答 1查看 109关注 0票数 0

我不知道如何创建一个数组变量,该变量有x个索引,对于每个索引,它都有一个来自给定范围的随机数。如何在TLA+或PlusCal中做到这一点?

假设我想要一个包含10个索引的数组。在每个索引上,例如在x1上,我希望它的值是介于1-10之间的随机数。

EN

回答 1

Stack Overflow用户

发布于 2022-07-28 18:16:14

TLA+/PlusCal是用来测试算法行为的,考虑到这一点,如果算法需要测试一个10的数组,其中每个索引都是1到10域中的值,那么您可以定义一个变量,它是一个计数10的元组,其域为1..10

inp \in [1..10 -> 1..10]

当对上述变量运行TLC模型检查器时,它将测试数组域中的每个值组合(这将花费很长的时间)。

下面是代码的完整示例(我已经将数组大小和域调整为具有1..3域的3,因为使用大域大小的大数组将需要很长时间来测试,存储大量内存):

代码语言:javascript
复制
---------------------------- MODULE ArrayRandom ----------------------------
EXTENDS Integers, Sequences, TLC

(*
--algorithm ArrayRandom {
   \* define a variable, inp, as an array (a 3-tuple) whose domain is from 1 to 3
   variables inp \in [1..3 -> 1..3];    
   { 
     assert \A n \in 1..Len(inp) : inp[n] >= 1 /\ inp[n] <= 3;
     print inp;  
   }
}
*)
=============================================================================

在上述代码上运行TLC模型检查器将打印以下内容:

代码语言:javascript
复制
<<1, 1, 3>>
<<1, 2, 1>>
<<1, 1, 1>>
<<1, 1, 2>>
<<1, 2, 3>>
<<1, 3, 1>>
<<1, 2, 2>>
<<1, 3, 2>>
<<1, 3, 3>>
<<2, 1, 1>>
<<2, 1, 2>>
<<2, 1, 3>>
<<2, 2, 1>>
<<2, 3, 1>>
<<2, 2, 3>>
<<2, 3, 2>>
<<2, 2, 2>>
<<2, 3, 3>>
<<3, 1, 1>>
<<3, 1, 2>>
<<3, 1, 3>>
<<3, 2, 2>>
<<3, 2, 3>>
<<3, 2, 1>>
<<3, 3, 3>>
<<3, 3, 1>>
<<3, 3, 2>>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72350178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档