首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的洗牌功能有多随机?

我的洗牌功能有多随机?
EN

Stack Overflow用户
提问于 2013-08-22 08:39:38
回答 2查看 706关注 0票数 3

我正在编写一个心理学实验,我需要对每个参与者的刺激顺序进行调整。我有一个函数,随机排序我的刺激,然后我的程序从一个.txt文件中读取。在实验过程中(4500次试验),在样本中默认使用的伪随机算法(如我在下面的“洗牌”函数中所示)是否充分地洗牌,以实际地预期不会在任何刺激位置或刺激位置模式中产生任何系统的偏差?

代码语言:javascript
复制
stimulus <- c("a", "b", "c", "d", "e")
shuffle <- function (x) { as.data.frame(sample((t(x)))) } 
shuffle (stimulus)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-22 08:50:40

我会说是的,你可以画这个。如果它是真正的随机,我们会期望在每个位置的值在洗牌顺序的均匀分布,所以让我们重复多次实验,并绘制结果.

代码语言:javascript
复制
#  Repeat experiment 10,000 times
res <- replicate( 10000 , shuffle(stimulus) )
out <- do.call( rbind , res )

#  Plot
par( mfrow = c( 3 , 2 ) )
for( i in 1:ncol(out)){
  hist( out[,i] , main = paste0("Values at position: " , i ) )
}

每个直方图都是每个位置上值的分布。5个位置所以5个直方图。每个位置的可能值都是均匀分布的,所以我要说,您的值是以偶数概率(这是sample的缺省值)分配给每个位置的。

票数 6
EN

Stack Overflow用户

发布于 2013-08-22 08:45:13

R中的随机数发生器很好--该语言是针对统计学家的。几点。

  1. 有关使用的随机数生成器的详细信息,请参见?RNG
  2. 使用set.seed使您的洗牌可复制 set.seed(1)
  3. 您可以将代码简化为: 刺激= c("a","b","c","d","e") data.frame(sh=sample(刺激))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18375460

复制
相关文章

相似问题

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