2016-04-15 11 views
0

So bin ich einen Kurs nehmen, die R Lernen erfordert, und ich habe Schwierigkeiten mit einem der Fragen:HW Zuordnung R von Grund auf für das Lernen

In dieser Frage werden Sie eine Funktion innerhalb einer anderen Funktion aufrufen üben. Wir werden die Wahrscheinlichkeit von zwei Sechsen durch Simulation von Würfelwürfen schätzen. (Die richtige Wahrscheinlichkeit für vier Dezimalstellen ist 0.0278 oder 1 in 36).

  • (1) Erstellen einer Funktion, die eine Reihe roll.dice() ndice und gibt das Ergebnis des Rollens ndice Anzahl der Würfel nimmt. Dies sind sechsseitige Würfel, die Zahlen zwischen 1 und 6 zurückgeben können. Zum Beispiel roll.dice(ndice=2) könnte 4 6 zurückgeben. Verwenden Sie die sample()-Funktion und achten Sie dabei auf die Option zum Ersetzen.

  • (2) Erstellen Sie jetzt eine Funktion prob.sixes() mit dem Parameter nsamples, die zuerst j gleich 0 setzt und dann roll.dice() mehrmals aufruft (nbeispiel mal). Jedes Mal, wenn roll.dice() zwei Sechsen zurückgibt, addiere eins zu j. Dann gebe die Wahrscheinlichkeit zurück, zwei Sechsen zu werfen, was durch n Stichproben geteilt wird.

Ich bin fein mit dem ersten Teil, oder zumindest glaube ich so, so ist dies, was ich

roll.dice<-function(ndice) 
{ 
    roll<-sample(1:6,ndice,TRUE) 
    return(roll) 
} 
roll.dice(ndice=2) 

habe, aber ich mit Teil zwei am kämpfen. Dies ist, was ich bis jetzt habe:

prob.sixes<-function(nsamples) { 
    j<-vector 
    j<-0 
    roll.dice(nsamples) 
    if (roll.dice==6) { 
    j<-j+1 
    return(j) 
    } 
} 
prob.sixes(nsamples=3) 

Sorry für den ganzen Text, aber kann mir jemand helfen?

+0

Für Leute, die bereit sind, hier zu antworten, finden Sie in den Richtlinien zur Beantwortung von Hausaufgaben Fragen hier: http: //meta.stackexchange.com/questions/10811/how-do-i-ask-und-antwort-hausaufgaben-fragen? lq = 1 – andrechalom

+0

Ich verbesserte die Formatierung enorm und einige Grammatik und Rechtschreibkorrekturen – zx485

Antwort

2

Ihr Code hat ein paar Probleme, die ich sehen kann. Der erste ist die Interpretation der Frage. Die Frage sagt:

nun eine Funktion prob.sixes() mit dem Parameter nsamples, dass erste Sätze j gleich 0 erstellen, und ruft dann roll.dice() mehrere Male (Nsample Anzahl).

Überprüfen Sie Ihren Code, machst du das? Oder rufst du roll.dice() ein einziges Mal an? Suchen Sie nach Möglichkeiten, das Gleiche (in Ihrem Fall roll.dice) mehrmals zu tun; Sie können die Funktion for in Betracht ziehen. Auch hier müssen Sie das Ergebnis dieser Funktion auf einer Variablen speichern, so etwas wie

rolled = roll.dice(2)

Zweites Problem:

Jedes Mal, wenn roll.dice() zwei Sechser zurückgibt, fügen eins bis j.

Sie überprüfen, ob roll.dice==6. Aber das hat zwei Probleme. Erstens ist roll.dice eine Funktion, keine Variable. Es wird also nie gleich 6 sein. Außerdem wollen Sie nicht prüfen, ob diese Variable gleich sechs ist. Sie sollten fragen, ob diese Variable einem Paar Sechsen entspricht. Wie kannst du "ein Paar Sechsen" schreiben?

+0

Das ist, was ich gefunden habe, aber es ist nicht korrekte prob.sixes <-Funktion (nsamples) { j <-vector j <-0 für (gewalzten in roll.dice) { if (gewalzten == 2 * 6) { j <-j + 1 gerollt <-j zurückgeben (j) } } } prob.sixes (nsamples = 2) – Natalie

Verwandte Themen