如何从填充了1和0的矩阵中取样n个随机点?
a=rep(0:1,5)
b=rep(0,10)
c=rep(1,10)
dataset=matrix(cbind(a,b,c),nrow=10,ncol=3)
dataset
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 1 0 1
[3,] 0 0 1
[4,] 1 0 1
[5,] 0 0 1
[6,] 1 0 1
[7,] 0 0 1
[8,] 1 0 1
[9,] 0 0 1
[10,] 1 0 1
Run Code Online (Sandbox Code Playgroud)
我想确定我的N个样本的位置(行,col)是随机的.
我知道,sample {base}但它似乎不允许我这样做,我知道的其他方法是空间方法将迫使我添加x,y并将其更改为空间对象并再次返回到正常矩阵.
更多信息
随机意味着我也意味着在"矩阵空间"内部传播,例如,如果我对4个点进行采样,我不希望得到4个相邻点,我希望它们在"矩阵空间"中传播.
知道矩阵中我取出随机点的位置(行,列)也很重要.
如何使用"采样"包在R中创建分层样本?我的数据集有355,000个观测值.代码在最后一行工作正常.下面是我写的代码,但我总是得到以下消息:"sort.list(y)中的错误:'x'必须是'sort.list'的原子'你在列表上调用了'sort'吗?"
请不要指向Stackoverflow上的旧消息.我研究了它们,但一直无法使用它们.谢谢.
## lpdata file has 355,000 observations
# Exclude Puerto Rico, Virgin Islands and Guam
sub.lpdata<-subset(lpdata,"STATE" != 'PR' | "STATE" != 'VI' | "STATE" != 'GU')
## Create a 10% sample, stratified by STATE
sort.lpdata<-sub.lpdata[order(sub.lpdata$STATE),]
tab.state<-data.frame(table(sort.lpdata$STATE))
size.strata<-as.vector(round(ceiling(tab.state$Freq)*0.1))
s<-strata(sort.lpdata,stratanames=sort.lpdata$STATE,size=size.strata,method="srswor")}
Run Code Online (Sandbox Code Playgroud) JavaScript的
我试过寻找这样的东西,但我找不到它.
这是一个简单的想法:
一个.取0到10之间的随机数.
湾 假设滚动的随机数是3.
C.然后,保存号码(3).
d.现在,在0到10之间再次取一个随机数,但它不能是3,因为它已经出现了.
我目前正在尝试创建一个程序,从列表中一次一个地随机选择两个项目供用户比较,没有两次比较两个项目或相同的项目.
list1 = ['item1', 'item2', 'item3', 'item4', 'item5']
Run Code Online (Sandbox Code Playgroud)
在list1,我想使用random.choice:
item_chosen = random.choice(list1)
print(item_chosen)
item_chosen2 = random.choice(list1)
print(item_chosen2)
Run Code Online (Sandbox Code Playgroud)
这里的问题item_chose可能是相同的item_chosen2,如果我设置一个循环,相同的比较将不止一次.此外,程序需要实现何时所有列表项彼此进行比较(手动编写每种组合中所有多个项之间的比较可能需要太长时间).
我正在创建一项调查.有31个可能的问题,我希望每个受访者回答3的子集.我希望他们以随机顺序进行管理.参与者不应该两次回答相同的问题
我创建了一个带有参与者索引的表矩阵,以及第一,第二和第三个问题的问题索引列.
使用下面的代码,索引31在我的样本中代表性不足.
我想我正在错误地使用示例函数.我希望有人能帮助我吗?
SgPassCode <- data.frame(PassCode=rep(0,10000), QIndex1=rep(0,10000),
QIndex2=rep(0,10000), QIndex3=rep(0,10000))
set.seed(123)
for (n in 1:10000){
temp <- sample(31,3,FALSE)
SgPassCode[n,1] <- n
SgPassCode[n,-1] <- temp
}
d <- c(SgPassCode[,2],SgPassCode[,3],SgPassCode[,4])
hist(d)
Run Code Online (Sandbox Code Playgroud) 我正在使用小样本数据:
>dput(dat.demand2050.unique)
c(79, 56, 69, 61, 53, 73, 72, 86, 75, 68, 74.2, 80, 65.6, 60, 54)
Run Code Online (Sandbox Code Playgroud)
其密度分布如下:

我知道这些值来自两个方案 - 低和高 - 并且假设基础过程是正常的,我使用该mixtools包来拟合双峰分布:
set.seed(99)
dat.demand2050.mixmdl <- normalmixEM(dat.demand2050.unique, lambda=c(0.3,0.7), mu=c(60,70), k=2)
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果:

(实线是拟合曲线,虚线是原始密度).
# get the parameters of the mixture
dat.demand2050.mixmdl.prop <- dat.demand2050.mixmdl$lambda #mix proportions
dat.demand2050.mixmdl.means <- dat.demand2050.mixmdl$mu #modal means
dat.demand2050.mixmdl.dev <- dat.demand2050.mixmdl$sigma #modal std dev
Run Code Online (Sandbox Code Playgroud)
混合参数是:
>dat.demand2050.mixmdl.prop #mix proportions
[1] 0.2783939 0.7216061
>dat.demand2050.mixmdl.means #modal means
[1] 56.21150 73.08389
>dat.demand2050.mixmdl.dev #modal std dev
[1] 3.098292 6.413906
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
`我想知道如何改变这个代码,以便两个向量的相应值不能相等.例如:如果x =(1,2,2,4,8,1,7,9,5,10)和y =(3,2,7,8,4,10,4,8,2, 1),两个向量的第二个值等于2.有没有什么方法可以告诉R在向量x中的第二个点重新采样,直到它在向量y中不是相同的值?
x <- c(1:10)
y <- c(1:10)
sample_x <- sample(x, length(10), replace = TRUE)
z <- sample_x > y`
Run Code Online (Sandbox Code Playgroud) 我在纸牌游戏中做了一些假设检验.
为此,我实现了游戏和玩游戏的AI.对于测试,我必须在我的牌组中所有可能的卡片安排的空间上进行抽样(牌组有24张牌,所以有24张不同的牌组初始状态).然而,抽样应该是独立的,因为(a)在洗牌后,每个初始安排应该有概率(1/24!)和(b)如果i和i'是两次洗牌之后的两个初始安排,排列i和然后排列i'是初始排列的概率应该是(1/24!)x(1/24!).[注1]
所以,如果d是我的牌组,那么shuffleDeck 就是我洗牌的功能.我相信随机monad是以概率((suffleDeck d)== i)= 1/24的方式构建的!
但我的问题是:当与函数replicateM交互时,此函数是否独立?换句话说,以下是真的吗?
P((replicateM 2(shuffleDeck d))== [i,i'])= P((suffleDeck d)== i)*P((suffleDeck d)== i')
其中P(x = X)是x为X的概率.
我用于shuffle的代码如下:
import System.Random
shuffleDeck d = do
seed <- newStdGen
return $ shuffle seed d
shuffle :: StdGen -> [Card] -> [Card]
shuffle g [] = []
shuffle g d = c : shuffle g' d'
where (c, g') = oneRandomCard g d
d' = d\\[c]
oneRandomCard :: StdGen -> [Card] -> (Card, StdGen)
oneRandomCard g d …Run Code Online (Sandbox Code Playgroud) 我希望这段代码每次给我相同的数字:
set.seed(1)
sample(rep(1:100), size = 1)
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.这是它的行为方式:如果我直接在彼此之后运行两条线,它会给我相同的数字,但是,如果我再次运行第二条线,它会给我一些不同的东西.这是否意味着种子在运行sample()一次后"花费" ?
我需要生成包含随机抽样的代码,但这些代码是可重现的.我怎样才能确保每次产生相同的随机数?
我正在以不固定速率的毫秒级采样泊松过程。我通过基于该间隔的平均速率检查每个大小增量的间隔中是否存在事件来离散化采样过程。由于我正在使用Python,因此它的运行速度比我希望的要慢一些。我当前使用的代码如下:
import numpy
def generate_times(rate_function,max_t,delta):
times = []
for t in numpy.arange(delta,max_t,delta):
avg_rate = (rate_function(t)+rate_function(t+delta))/2.0
if numpy.random.binomial(1,1-math.exp(-avg_rate*delta/1000.0))>0:
times.extend([t])
return times
Run Code Online (Sandbox Code Playgroud)
速率函数可以是任意的,考虑到速率函数,我不是在寻找封闭形式的解决方案。
如果您想使用一些参数,可以尝试:
max_t = 1000.0
delta = 0.1
high_rate = 100.0
low_rate = 0.0
phase_length = 25.0
rate_function = (lambda x: low_rate + (high_rate-low_rate)*0.5*(1+math.sin(2*math.pi*x/phase_length)))
Run Code Online (Sandbox Code Playgroud) random-sample ×10
r ×6
random ×4
python ×2
distribution ×1
haskell ×1
javascript ×1
mixed-models ×1
poisson ×1
probability ×1
sample ×1
simulation ×1
vector ×1