gpt4 book ai didi

r - 使用R作为游戏模拟器

转载 作者:行者123 更新时间:2023-12-02 11:03:13 27 4
gpt4 key购买 nike

我正在尝试模拟一个简单的游戏,您可以旋转一个旋转器,标记为 1-5,然后继续前进,直到您通过终点线(第 50 点)。我对 R 有点陌生,并且已经为此工作了一段时间寻找答案。当我运行下面的代码时,它不会按顺序添加数字,而是返回 50 次随机旋转及其值​​的列表。我如何才能将旋转添加到彼此之上,然后停止一次 => 50?

SpacesOnSpinner<-(seq(1,5,by=1))
N<-50
L1<-integer(N)

for (i in 1:N){
takeaspin<-sample(SpacesOnSpinner,1,replace=TRUE)
L1[i]<-L1[i]+takeaspin
}

最佳答案

这是复制的一个很好的用例。我不确定您是否必须使用 for 循环,但您可以这样做(replicate 也是一个循环):

SpacesOnSpinner<-(seq(1,5,by=1))
N<-10
cumsum( replicate( N , sample(SpacesOnSpinner,1,replace=TRUE) ) )
#[1] 5 10 14 19 22 25 27 29 30 33

但是,由于您有一个想要break的条件,也许带有while条件的另一个答案正是您在这种情况下所需要的(人们会告诉你它们在 R 中很糟糕,但它们有它们的用途)。使用此方法,您可以看到之后需要旋转多少次才能通过一个简单的子集超过 50 次(但您不会提前知道需要旋转多少次,但最多会是50!):

N<-50
x <- cumsum( replicate( N , sample(5,1) ) )

# Value of accumulator at each round until <= 50
x[ x < 50 ]
#[1] 5 6 7 8 12 16 21 24 25 29 33 34 36 38 39 41 42 44 45 49

# Number of spins before total <= 50
length(x[x < 50])
[1] 20

关于r - 使用R作为游戏模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com