Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Finanzmathematik mit MATLAB

Studierende:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Lottospiel 6 von 49

 

Lisswiss
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 11.01.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2022, 11:20     Titel: Lottospiel 6 von 49
  Antworten mit Zitat      
Heyho
Ich Versuche gerade ein Lottospiel zu machen, dass solange läuft, bis ich sozusagen eine Millionen gewonnen habe oder ich kein Geld mehr habe z.b. mit 1000 Euro Einsatz.
Weiß gar nicht wo ich anfangen soll ... Crying or Very sad
Kann mir wer auf die Sprünge helfen?
Danke und liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 23.991
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.01.2022, 23:17     Titel:
  Antworten mit Zitat      
Hallo,

"Lottozahlen" erzeugen kannst du mit:
Code:


Für alles weitere müsstest du mehr Details liefern:
- Spielst du immer die gleichen Zahlen?
- Welche Gewinne rechnest du für 3, 4, 5, 6 richtige?

Ansonsten...
Zitat:
Weiß gar nicht wo ich anfangen soll ...

Mit einem ersten Schritt, und dann dem nächsten etc.
Das Beispiel ist jetzt nicht so komplex, dass man sich eine Strategie überlegen muss, was man zuerst wie angeht.

Sollten dir die Grundlagen fehlen, hilft das MATLAB Onramp.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ulli88
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2022, 17:29     Titel:
  Antworten mit Zitat      
Da das Thema noch gar nicht so alt ist und ich in etwa die gleiche Problemstellung habe, will ich kein neues Thema eröffnen.

Die Problemstellung ist folgene: Programmieren einer Lottosimulation.
Abbruchkriterien sind max Gewinn, max Wochen oder max Einsatz.

In meinem Fall habe ich bereits questdlgs und inputdlgs geschrieben, und versuche mich gerade an dem Vergleich der eiunzelnen Zahlen.
Ich habe kürzlich die "ismember" Funktion entdeckt und stehe momentan auf dem schlauch, da ich keine für mich verständliche Strategie
gefunden habe, das Programm umzusetzen.

Eine ungefähre Grundstruktur habe ich bereits, aber bitte steinigt mich nicht,
wenn ich Anfängerfehler zu lasten der Performance im Code "versteckt" habe.

Grundsätzlich wird zuerst das Abbruchkriterium abgefragt, dadurch dass ich nicht
weiß, wie ich die einzelnen Eingaben verarbeiten soll, habe ich nur switches drin
und versuche nach und nach den rest zu vervollständigen.

Jetzt zu meinen Fragen:

Könnte mir jemand grundsätzlich mal erklären, wie die Ausgaben der einzelnen Cases in Matlab verarbeitet werden?

Wie erreiche ich, dass ein voller "Schein" also 12 Felder mit zufallsgenerierten nicht doppelten Zahlen erstellt wird, die ich im weiteren Verlauf mit der
Lottoziehungszahlen vergleichen kann? (hier habe ich das Problem, dass ich die "gespeicherten" zahlen alle in einem Vektor habe und nicht wie bei dem
Cellarray die 6 Zahlen in einem Vektor pro "Cell"

Gibt es eine schönere Lösung Vektoren aus einem Cellarray zu ziehen und
als Variable zu verarbeiten, als in meinem Code?


Ich danke Euch jetzt schon mal im Voraus für Eure Mühen!!

Code:
% Das ist mein Programm.
%%
clear;clc;format compact
check=1;
passend=1;
Feldpreis=1.20;
Scheinpreis=14.40;
%% Userabfrage
Abbruchkriterium= questdlg('Welches soll das Abbruchkriterium sein?','Abbruchkriterium','Wochen','Einsatz','Gewinn','');
switch Abbruchkriterium
    case 'Wochen'
                %% Festlegung der Spieldauer, 3 Möglichkeiten
                Wochenauswahl= questdlg('Wie viele Wochen soll gespielt werden?','Zeitraum',...
                'Eigener Zeitraum','Eine Woche','Vier Wochen',{'[1 50]'});
        switch Wochenauswahl
               case 'Eigener Zeitraum'
                %Fenster mit Wochenzahleingabe
                Anzahlwochen = inputdlg(('Bitte Anzahl der Wochen festlegen'),'Zeitraum wählen',[1 50],{''});
                anz_wochen= Anzahlwochen
                anz_wochen=str2num(Anzahlwochen{1});
                %Kosten, Ziehungen und Spiele .*anz_wochen
               case 'Eine Woche'
                %Kosten, Ziehungen und Spiele .*1
               case 'Vier Wochen'
                %Kosten, Ziehungen und Spiele .*4
               case ''
                   errordlg('Abbruch durch User','Fehler');return
               end
   %% Festlegung Einsatz
    case 'Einsatz'
        max_einsatz=inputdlg('Bitte maximalen Einsatz bestimmen:','Maximaleinsatz',[1 40],{''});
        max_einsatzv=str2num(max_einsatz{1});
    case 'Gewinn'
        %
    case ''
        errordlg('Abbruch durch User','Fehler');return
end    
%% Festlegung Spielart
        Spielart= questdlg('Was möchten Sie spielen?','Spielart','Selbst tippen',...
        'Voller Schein','');
    switch Spielart
         % User tippt eigenständig
      case 'Selbst tippen'
        Zahlwahl= questdlg({'Welche Zahlen?'},'Auswahl der Zahlen', ...
                         'Gespeicherte Zahlen','Eigene Eingabe',{[1 50]});
        %Dialogfenster mit 2 Knöpfen öffnet sich
        switch Zahlwahl
            case 'Gespeicherte Zahlen'
                disp('Gespeicherte Zahlen')
               gespeichert = [5 7 12 29 36 41;2 3 8 15 32 43;3 8 5 9 15 34;4 8 16 19 46 48;...
                              1 25 27 34 38 49;1 3 21 25 37 41;6 12 28 30 42 49;1 7 12 36 37 39;...
                              2 9 12 17 28 34;3 6 30 35 36 38;7 8 11 32 39 44;4 14 17 18 24 36];
            case 'Eigene Eingabe'
                % Inputfenster für maximal 12 Felder mit Eingabebeispiel
                prompt = {'Zahlen bitte durch ein Komma trennen',...
                            'Feld Nr. 1: ','Feld Nr. 2:','Feld Nr. 3:','Feld Nr. 4',...
                            'Feld Nr. 5','Feld Nr. 6:','Feld Nr. 7: ','Feld Nr. 8:',...
                            'Feld Nr. 9:','Feld Nr. 10','Feld Nr. 11','Feld Nr. 12:'};
                dlgtitle = 'Eingabe';
                dims = [1 40];
                definput = {'Beispiel: x,x,x,x,x,x','','','','','','','','','','','',''};
                answer = inputdlg(prompt,dlgtitle,dims,definput,"off");
                Zahlentest= answer;
                % Weise einzelne Cellarrays den Variablen zu
                % Eine Funktion wäre schneller, wenn ich wüsste wie
                % Konvertiere Cellarray 1x6 zu Zeilenvektor
                Tipp1= str2num(Zahlentest{2});
                Tipp2= str2num(Zahlentest{3});
                Tipp3= str2num(Zahlentest{4});
                Tipp4= str2num(Zahlentest{5});
                Tipp5= str2num(Zahlentest{6});
                Tipp6= str2num(Zahlentest{7});
                Tipp7= str2num(Zahlentest{8});
                Tipp8= str2num(Zahlentest{9});
                Tipp9= str2num(Zahlentest{10});
                Tipp10= str2num(Zahlentest{11});
                Tipp11= str2num(Zahlentest{12});
                Tipp12= str2num(Zahlentest{13});
         
                % User bekommt Fehlermeldung, da keine Auswahl getroffen
                %Um das Script nach der Fehlermeldung zu unterbrechen, wird hier
                %return eingefügt und das Script beendet
            case ''
                errordlg('Abbruch durch User','Fehler');return
        end
%% User tippt vollen Schein
    case 'Voller Schein'
        disp('Voller Schein wird gespielt')
        %Voller Schein wird gespielt
    case ''
        errordlg('Abbruch durch User','Fehler');return      
end
%% Ziehung der Lottozahlen incl Sortierung und Überprüfung auf doppelte Zahlen
while passend~=0
    p=randi([1 49],[1 6]);
    p=sort(p);
    p2=diff(p);
    p3=p2==0;
    passend=any(p3);
end
gezogen=p;


disp('end of Script')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.991
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.02.2022, 20:34     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Könnte mir jemand grundsätzlich mal erklären, wie die Ausgaben der einzelnen Cases in Matlab verarbeitet werden?

Ich verstehe die Frage nicht, insbesondere was du mit "Ausgaben" von Cases meinst.

Zitat:
Wie erreiche ich, dass ein voller "Schein" also 12 Felder mit zufallsgenerierten nicht doppelten Zahlen erstellt wird

Das ist doch im Grunde die Antwort auf die ursprüngliche Frage?
Code:


Zitat:
Gibt es eine schönere Lösung Vektoren aus einem Cellarray zu ziehen und
als Variable zu verarbeiten, als in meinem Code?

cell2mat

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ulli88
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2022, 23:23     Titel:
  Antworten mit Zitat      
Hallo Harald,

schon mal vielen lieben Dank für deine Antwort.

Mit der Ausgabe der Cases meine ich folgendes:

z.B. switch 'wochen'

case 1 generiert ein inputdialog wo die Anzahl der Wochen eingegeben wird.
in meinem Fall sagen 8 Wochen.

wie komme ich an die 8 als argument ran?
muss ich die antwort dann als neue variable festlegen? z.B.
Code:

answer = inputdlg(prompt,dlgtitle,dims,definput,"off")
anzahl_wochen=answer


Um mit der eingabe, hier 8, weiter arbeiten zu können?

Code:

generiert mir 12 Zahlen aus 49, kann ich das ganze umändern, dass mir
6 mal 12 Zahlen generiert werden, ohne for schleife oder das ganze 12 mal zu tippen??

bei cell2mat wirft matlab mir nur fehler aus, da muss ich die doc nochmal studieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.991
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.02.2022, 23:29     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
wie komme ich an die 8 als argument ran?

answer ist doch die Antwort. Was meinst du mit "als argument"??

Zitat:
kann ich das ganze umändern, dass mir
6 mal 12 Zahlen generiert werden, ohne for schleife oder das ganze 12 mal zu tippen?

Was spricht gegen die for-Schleife? Bei dem wenigen Rechenaufwand spielt Performance ja keine Rolle.

Zitat:
bei cell2mat wirft matlab mir nur fehler aus

Wenn du Fehler bekommst und Unterstützung bei der Behebung möchtest:
1. Den verwendeten Code angeben
2. Den erhaltenen Fehler angeben

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ulli88
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2022, 23:40     Titel:
  Antworten mit Zitat      
Fehlermeldung:
Code:

Error using cat
Dimensions of arrays being concatenated are not consistent.
Error in cell2mat (line 83)
            m{n} = cat(1,c{:,n});


aus dem Codeteil

Code:

                prompt = {'Zahlen bitte durch ein Komma trennen',...
                            'Feld Nr. 1: ','Feld Nr. 2:','Feld Nr. 3:','Feld Nr. 4',...
                            'Feld Nr. 5','Feld Nr. 6:','Feld Nr. 7: ','Feld Nr. 8:',...
                            'Feld Nr. 9:','Feld Nr. 10','Feld Nr. 11','Feld Nr. 12:'};
                dlgtitle = 'Eingabe';
                dims = [1 40];
                definput = {'Beispiel: x,x,x,x,x,x','1,2,3,4,5,6','2,3,4,5,6,7','3,4,5,6,7,8','','','','','','','','',''};
                answer = inputdlg(prompt,dlgtitle,dims,definput,"off");
                Zahlentest= answer;
                % Weise einzelne Cellarrays den Variablen zu
                % Eine Funktion wäre schneller, wenn ich wüsste wie
                % Konvertiere Cellarray 1x6 zu Zeilenvektor
                cell2mat(Zahlentest)
                %[tipp1,tipp2,tipp3,tipp4,tipp5,tipp6,tipp7,tipp8,tipp9,tipp10,tipp11,tipp12]=Zahlentest{2:13}


den unteren Teil hab ich aus der doc. hier wirft der mir allerdings Char arrays raus.
da weiß ich nicht so ganz, wie ich damit umgehen kann, weil ich "row vector" brauche


Edit:

Ja verdammte Axt, ich habe zu viel nebenher gelesen.

mit der 8 als argument sollte als Variable heißen.
Sprich ich möchte die Variable "wochen_anz" definieren um sie im weiteren verlauf mit der Anzahl der "Spiele" bzw "ziehungen" und den "kosten"zu multiplizieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.991
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.02.2022, 00:07     Titel:
  Antworten mit Zitat      
Hallo,

sollen wirklich pro Feld 6 Zahlen eingegeben werden?? Das finde ich sehr unübersichtlich.
Wenn du das so möchtest:
nums = str2double(split(Zahlentest,","))
Wenn du das nicht so möchtest, ist mir nicht klar, wie die Eingabe erfolgen soll.

Zitat:
mit der 8 als argument sollte als Variable heißen.
Sprich ich möchte die Variable "wochen_anz" definieren um sie im weiteren verlauf mit der Anzahl der "Spiele" bzw "ziehungen" und den "kosten"zu multiplizieren.

Code:
wochen_anz = str2double(Anzahlwochen)


Ich kann nur empfehlen, die Doku der verwendeten Befehle gründlich zu lesen. In der Doku von inputdlg z.B. das Beispiel "Convert Input to Numeric Values".

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ulli88
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2022, 00:30     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

sollen wirklich pro Feld 6 Zahlen eingegeben werden?? Das finde ich sehr unübersichtlich.


Theoretisch könnte ich für jedes Feld, 6 einzelne input zeilen schreiben, das wäre allerdings ziemlich viel getippe. Zumindest aus der Sicht eines Matlabanfängers Smile

gibt es da alternativen zu? For schleife für 12 Felder und jeweils ein inputfeld für jede Zahl?

Zitat:

Wenn du das so möchtest:
nums = str2double(split(Zahlentest,","))

hier gibt es Komplikationen, wenn nicht alle die gleiche Anzahl an trennzeichen haben.

Zitat:

Ich kann nur empfehlen, die Doku der verwendeten Befehle gründlich zu lesen. In der Doku von inputdlg z.B. das Beispiel "Convert Input to Numeric Values".


Danke, da habe ich wohl das ein oder andere entscheidende Wörtchen überlesen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.991
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.02.2022, 00:40     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
gibt es da alternativen zu? For schleife für 12 Felder und jeweils ein inputfeld für jede Zahl?

Ich würde eine App erstellen oder Live Controls verwenden.

Zitat:
hier gibt es Komplikationen, wenn nicht alle die gleiche Anzahl an trennzeichen haben.

Stimmt. Was soll aber denn gemacht werden, wenn es unterschiedlich viele Trennzeichen sind? Dann ist das so unübersichtlich, dass es schwierig systematisch und allgemeingültig verarbeitet werden kann.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Ulli88
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2022, 16:20     Titel:
  Antworten mit Zitat      
Ich bin jetzt nochmal ein Stück weiter gekommen und beiße mir gerade die Zähne an einem Vergleich aus.

Wie schaffe ich es eine Zählschleife zu schreiben, die mir die Anzahl der Richtigen tipps mit einem 12x1 Spaltenvektor vergleicht?

Der Versuch im oberen Teil die Zählschleife funktioniert nicht, warum weiß ich leider nicht.
Die Gewinnklassen sind bereits festgelegt und müssen "nur" noch mit den Anzahlen der Richtigen pro tippreihe multipliziert und untereinander addiert werden.
Da stehe ich allerdings auf dem Schlach Sad

Code:

%%
clear;clc;format compact
check=1;
passend=1;
Feldpreis=1.20;
Bearbeitungsgebuehr=0.80;
Scheinpreis=14.40;
GK8=18.50;
GK6=148.10;
GK4=6614.40;
GK2=17074092.80;
rdrei=0;
rvier=0;
rfuenf=0;
rsechs=0;
rzaehler=0;
Kostenvoll=0;
%% Festlegung Spielart
        Spielart= questdlg('Was möchten Sie spielen?','Spielart','Selbst tippen',...
        'Voller Schein','');
    switch Spielart
         % User tippt eigenständig
      case 'Selbst tippen'
        Zahlwahl= questdlg({'Welche Zahlen?'},'Auswahl der Zahlen', ...
                         'Gespeicherte Zahlen','Eigene Eingabe',{[1 50]});
        %Dialogfenster mit 2 Knöpfen öffnet sich
        switch Zahlwahl
            case 'Gespeicherte Zahlen'
                disp('Gespeicherte Zahlen')
               gespeichert = [5 7 12 29 36 41;2 3 8 15 32 43;3 8 5 9 15 34;4 8 16 19 46 48;...
                              1 25 27 34 38 49;1 3 21 25 37 41;6 12 28 30 42 49;1 7 12 36 37 39;...
                              2 9 12 17 28 34;3 6 30 35 36 38;7 8 11 32 39 44;4 14 17 18 24 36];
               Tippinput=gespeichert
            case 'Eigene Eingabe'

                prompt = {'Zahlen bitte durch ein Leerzeichen trennen',...
                            'Feld Nr. 1: ','Feld Nr. 2:','Feld Nr. 3:','Feld Nr. 4',...
                            'Feld Nr. 5','Feld Nr. 6:','Feld Nr. 7: ','Feld Nr. 8:',...
                            'Feld Nr. 9:','Feld Nr. 10','Feld Nr. 11','Feld Nr. 12:'};
                dlgtitle = 'Eingabe';
                dims = [1 40];
                definput = {'Beispiel: x x x x x x','','','','','','','','','','','',''};
                answer = inputdlg(prompt,dlgtitle,dims,definput,"off");
                Tippinput= answer;


         

            case ''
                errordlg('Abbruch durch User','Fehler');return
                % User bekommt Fehlermeldung, da keine Auswahl getroffen
                % Um das Script nach der Fehlermeldung zu unterbrechen, wird hier
                % return eingefügt und das Script beendet
        end
%% User tippt vollen Schein
    case 'Voller Schein'
        disp('Voller Schein wird gespielt')
        % Voller Schein wird gespielt
        for Tipprandom=1:12
        Tippinput(Tipprandom,[1:6])= sort(randperm(49,6));
        end

        % 12x6dbl für einen Sortierten Schein ohne doppelte Zahlen
       
    case ''
        errordlg('Abbruch durch User','Fehler');return  
                % User bekommt Fehlermeldung, da keine Auswahl getroffen
                % Um das Script nach der Fehlermeldung zu unterbrechen, wird hier
                % return eingefügt und das Script beendet
    end

    %% Userabfrage
Abbruchkriterium= questdlg('Welches soll das Abbruchkriterium sein?','Abbruchkriterium','Wochen','Einsatz','Gewinn','');
switch Abbruchkriterium
    case 'Wochen'
                %% Festlegung der Spieldauer, 3 Möglichkeiten
                Wochenauswahl= questdlg('Wie viele Wochen soll gespielt werden?','Zeitraum',...
                'Eigener Zeitraum','Eine Woche','Vier Wochen',{''});
        switch Wochenauswahl
               case 'Eigener Zeitraum'
                %Fenster mit Wochenzahleingabe
                Anzahlwochen = inputdlg(('Bitte Anzahl der Wochen festlegen'),'Zeitraum wählen',[1 50],{''});
                anz_wochen=str2double(Anzahlwochen{1});

                for i=1:(anz_wochen*2) % Wochenanzahl x2
                 ziehung = sort(randperm(49,6));
                 richtige= ismember(Tippinput,ziehung(1:6));                
                 disp(fprintf('Ziehung %i -> [%2d %2d %2d %2d %2d %2d] -> %d von 6 richtig\n',i,ziehung(1:6),sum(richtige,2)))
               rzaehler= sum(richtige,2);

                 if    rzaehler(:,1)==3.00                  
                    rdrei=rdrei+1;

                 end                                                                
                if rzaehler(:,1)==4                                                    
                   rvier=rvier+1;
                end
                if rzaehler(:,1)==5
                   rfuenf=rfuenf+1;
                end
                if rzaehler(:,1)==6
                   rsechs=rsechs+1;
                end
                Gewinn=(rdrei*GK8)+(rvier*GK6)+(rfuenf*GK4)+(rsechs*GK2);
                Gewinn
               
             
               rzaehler=0
                end
                % Konvertierung Cell in Vektor
        %Kosten, Ziehungen und Spiele .*anz_wochen
               case 'Eine Woche'
                for i=1:2 % Jeweils 2 Spiele pro Woche
                 ziehung = sort(randperm(49,6));
                 richtige= ismember(Tippinput,ziehung(1:6));
                 rzaehler= sum(richtige);
                 disp(fprintf('Ziehung %3d -> [%2d %2d %2d %2d %2d %2d] -> %d von 6 richtig\n',i,ziehung(1:6),sum(richtige)))
                end
                %Kosten, Ziehungen und Spiele .*1
               case 'Vier Wochen'
                for i=1:8 % Jeweils 2 Spiele pro Woche
                 ziehung = sort(randperm(49,6));
                 richtige = ismember(Tippinput,ziehung(1:6));
                 rzaehler= sum(richtige);
                 disp(fprintf('\nZiehung %3d -> [%2d %2d %2d %2d %2d %2d] -> %d von 6 richtig\n',i,ziehung(1:6),sum(richtige)))
                end                  
                %Kosten, Ziehungen und Spiele .*4
               case ''
                   errordlg('Abbruch durch User','Fehler');return
                % User bekommt Fehlermeldung, da keine Auswahl getroffen
                % Um das Script nach der Fehlermeldung zu unterbrechen, wird hier
                % return eingefügt und das Script beendet
               end
   %% Festlegung Einsatz
 

    case 'Einsatz'
        max_einsatz=inputdlg('Bitte maximalen Einsatz in € bestimmen:','Maximaleinsatz',[1 40],{''});
        max_einsatzv=str2num(max_einsatz{1});
        anz_einsatz=(max_einsatzv/15.20);
        for i=1:anz_einsatz
        Kostenvoll=(Scheinpreis+Bearbeitungsgebuehr)*i;
                 ziehung = sort(randperm(49,6));
                 richtige= ismember(Tippinput,ziehung(1:6));
                 rzaehler= sum(richtige);
                 disp(fprintf('Ziehung %3d -> [%2d %2d %2d %2d %2d %2d] -> %d von 6 richtig\n',i,ziehung(1:6),sum(richtige)))
             
                Kostenvoll
        end

        % Konvertierung Cell in Vektor
        % Dient als Quotient für Anzahl der Spiele
    %case 'Gewinn'
        %
    case ''
        errordlg('Abbruch durch User','Fehler');return
                % User bekommt Fehlermeldung, da keine Auswahl getroffen
                % Um das Script nach der Fehlermeldung zu unterbrechen, wird hier
                % return eingefügt und das Script beendet
end    
 
%% Berechnung der Kosten

%% Berechnung des Gewinns
if rzaehler==3

    rdrei=rdrei+1;                                                          % hier hätte ich gerne die Zähler um herauszufinden, wie viele richtige jeweils getippt wurden
                                                                            % allerdings weiß ich nicht ob die schleife hier sinn macht oder in jeden einzelnen case Verbaut werden muss
end
if rzaehler==4
    rvier=rvier+1;
end
if rzaehler==5
    rfuenf=rfuenf+1;
end
if rzaehler==6
    rsechs=rsechs+1;
end
Gewinn=(rdrei*GK8)+(rvier*GK6)+(rfuenf*GK4)+(rsechs*GK2);
Gewinn
 

disp('end of Script')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.991
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.02.2022, 21:49     Titel:
  Antworten mit Zitat      
Hallo,

welchen Teil des recht langen Codes soll man sich nun ansehen?

Mein genereller Rat wäre, im Zweifelsfall erst eine (zukünftige) Iteration der for-Schleife zu implementieren und dann - wenn das funktioniert - die Schleife drumherum zu schreiben.
Hilfreiche Funktionen dürften intersect oder ismember sein.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2022 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.