我有一个事件 A ,该事件在一系列抛掷中的大多数抛掷硬币出现时触发。我有一个不公平的硬币,我想看看 A 的可能性如何随着掷球次数的变化以及每次掷球的概率的变化而变化。
这是我的功能,假设要扔3次
def aggregate(s):
u = s[s.notnull()].unique()
if not u.size: return np.nan
return u
df.groupby('objectID').agg(aggregate)
grade OS method
objectID
object_id_0001 AAA Mac organic
object_id_0002 ABC Win NaN
我希望$env:BUILD_BUILDNUMBER
函数可以:
我用$(...)
和n <- 3
#victory requires majority of tosses heads
#tosses only occur in odd intervals
k <- seq(n/2+.5,n)
victory <- function(n,k,p){
for (i in p) {
x <- 0
for (i in k) {
x <- x + choose(n, k) * p^k * (1-p)^(n-k)
}
z <- x
}
return(z)
}
p <- seq(0,1,.1)
victory(n,k,p)
测试了此结果,输出为0.75000、0.84375。我知道输出应该是0.625、0.0984375。
答案 0 :(得分:0)
我无法完全获得所需的结果,但也许可以帮助您。
在R中循环时,要循环的向量保持不变,并且用于循环更改的值。例如,查看这些循环中的差异:
test <- seq(0,1,length.out = 5)
for ( i in test){
print(test)
}
for ( i in test){
print(i)
}
for ( i in 1:length(test)){
print(test[i])
}
进行迭代时,首先将i
设置为p
中的第一个数字,然后将其设置为k
中的第一个数字,然后使用不变的向量。
您还要在p
的第一个循环中将z赋值,然后在第二个循环中将其覆盖。
尝试使用以下内容-我仍然没有得到您说的答案,但是它可能会帮助您找到错误的位置(沿途打印或使用debug(victory)
可能也会有帮助
victory <- function(n,k,p){
z <-list()
for (i in 1:length(p)) {
x <- 0
for (j in 1:length(k)) {
x <- x + choose(n, k[j]) * p[i]^k[j] * (1-p[i])^(n-k[j])
}
z[i] <- x
}
return(z)
}