首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么"sam <-sample(1:1000,50) y<-x[sam]“与"y<-x[sample(1:1000,50)]”不同?

"sam <-sample(1:1000,50) y<-x[sam]" 与 "y<-x[sample(1:1000,50)]" 的区别在于变量的赋值顺序不同。

在第一个表达式中,先执行了 sam <-sample(1:1000,50),即从1到1000中随机抽取50个数,并将结果赋值给变量 sam。然后执行 y<-x[sam],即从变量 x 中按照 sam 中的索引值,抽取对应的元素,并将结果赋值给变量 y

而在第二个表达式中,直接执行了 y<-x[sample(1:1000,50)],即从1到1000中随机抽取50个数,并将结果作为索引值,从变量 x 中抽取对应的元素,并将结果赋值给变量 y

因此,两个表达式的结果是不同的。第一个表达式中的 sam 是一个保存了随机抽取的索引值的变量,而第二个表达式中直接使用了随机抽取的索引值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 史上全网最清晰后缀自动机学习(二)后缀自动机的线性时间构造算法

    = x; return z; } // 参见附录图2 int y = newnode(-1, sam[v].longest+1, sam[x].trans, sam[x].slink); sam...[x].shortest = sam[y].longest + 1; sam[x].slink = y; sam[z].shortest = sam[y].longest + 1; sam[z]....因为本题就是要求不同 子串的个数,所以每个节点要有这两个字段. 如果是处理字符串的别的具体问题, 则这两个业务字段是不需要的——即 非sam本身必须字段 line 14 为什么要开两倍节点?...正因为如此, 我们才要判断一下sam[v].longest + 1 sam[x].longest之间的关系, 注意, 根据【1】的推论, 我们知道sam[v].longest+1<=sam[x].longest...所以sam[v].longest+1sam[x].longest之间的关系只有==<, 如果是==的话, 则说明状态x并没有因为ch 的读入而变化, 如果是<的话, 则说明x状态因为ch的读入而变化了

    45311
    领券