Announcement

Collapse
No announcement yet.

Nur ausgewählte Zufallszahlen verwenden ...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nur ausgewählte Zufallszahlen verwenden ...

    Hallo,

    Ich habe folgendes Problem in meinem Mathe-Programm: Bei der Division sollten keine kommastellen Ergebnisse möglich sein. Die Zahlen werden per Random - Funktion erzeugt. Frage: Wie geht das?
    mfg
    Torsten Wilberg

  • #2
    Meinst Du die Erzeugnung der Zufallszahlen (dann versuch Random(Bereich), oder daß das Ergebnis der Division nur Integer Zahlen erzeugen soll

    Comment


    • #3
      Hallo Frank,

      die Zahlen sollten schon mit random() erzeugt werden. Es funktioniert mit der Multipli. , Add. Sub. wunderbar. Leider halt nicht mit der Division. Eine Lösung egal welcher Art, ist mir gleich.
      mfg
      Torsten Wilber

      Comment


      • #4
        Ich glaube ich habe immer noch nicht richtig verstanden was du vorhast. Aber egal.<br>
        Random(x) erzeigt Integerzufallszahlen zwischen 0(einschließlich) und x(Ausschließlich).<br>
        Bsp. Random(10)=> Mogliche Ergebnisse =(0,1,2,3,4,5,6,7,8,9).<br>
        Ansosnten kannst Du mit trunc immer noch eine Realzahl eine Int64-Zahl wandel

        Comment


        • #5
          Hallo Torsten,

          wenn ich Dich richtig verstanden habe, dann willst Du Zufallszahlen erzeugen, aber bei der Division nur solche zulassen, für die das Ergebnis der Div. eine ganze Zahl ist - richtig?
          Ich würde dabei den alten Weg von try and error gehen - also:
          <br>
          repeat<br>
          ZZ := Random(x) + 1; \\um das Intervall auf 0 < c <= x zu setzen<br>
          until Frac(Zahl / ZZ) = 0;<br>
          <br>
          Es gibt dafür sicherlich auch eine rein mathematische Lösung aber die fällt mir grad nicht ein ;-)

          Gruß Fal
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Hallo Frank,

            vielen Dank für die Antwort. Die Division mit "Komma Ergebnisse" gibt es erst ab einer bestimmten Klassenstufe. Daher möchte ich diesen Fall erstmal ausschließen. Die Funktion trunc kenne ich nicht.
            mfg
            Torsten Wilber

            Comment


            • #7
              Hallo Falk,

              vielen Dank für die Antwort.
              Welche Funktion hat 'c'?
              mfg
              Torsten Wilber

              Comment


              • #8
                kleiner Denk und Schreibfehler - muß natürlich 0 < ZZ <= x heißen :
                Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                Comment


                • #9
                  Hi

                  Wenn jede zufällig gewählte Zahl X ohne Rest durch Y teilbar sein soll, dann muß X = ZZ * Y sein. Nun, d.h. X := Random(Y) * Y;

                  Gruß Hage

                  Comment


                  • #10
                    mmhh, und wie machst Du das bei dem hier geschilderten Problem : Eine Zahl X soll ohne Rest durch eine zufällig gewählte Zahl Y teilbar sein? Die Formel X := Random(Y) * Y stimmt nach wie vor - aber wie stellst Du die nach Y um? 8-)

                    Gruß Fal
                    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                    Comment


                    • #11
                      Hi

                      X := Random(100) * 50;

                      X mod 50 = 0, oder Frac(X / 50) = 0.0

                      Gruß Hage

                      Comment


                      • #12
                        :-I ... vielleicht hab ich ein Brett vorm Kopf?? - dann nimm es mir bitte weg - aber wenn ich eine Zahl X=100 gegeben habe und dafür per Zufall einen Teiler Y suche für den gilt: Frac(X / Y) = 0 dann komme ich mit Deiner Formel nicht weiter. X ist gegeben, Y ist gesucht und Y soll eine zufällig gewählte Zahl sein.

                        Ich weiß, das hat jetzt nichts mehr mit der eigentlichen Frage von Torsten zu tun, aber das beschäftigt mich jetzt - ich hab nämlich sonst nichts zu tun ;-)

                        Gruß Fal
                        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                        Comment


                        • #13
                          Jo
                          Diese Aufgabenstellung ist eine andere, am einfachsten ein "Trial and Error":

                          <pre>

                          var
                          X,Y,I: Integer;
                          begin
                          X := 100;
                          I := 0;
                          repeat
                          if I > X then raise "X a Prime ?"
                          Y := Random(X div 2);
                          Inc(I);
                          until X mod Y = 0;
                          end; <br>

                          var
                          X,Y: Double;
                          begin
                          X := 100;
                          reapeat
                          Y := Random(X / 2);
                          until Frac(X / Y) = 0;
                          end;

                          </pre>

                          Man kann auch einen zufälligen Teiler direkt konstruieren. Für sehr große Zahlen wäre solch ein Algo. dann schneller.
                          Beachte aber das das ermitteln eines Teilers ein NP Problem ist, d.h. betrachtet man alle natürlichen Zahlen dann ist das Problem NICHT lösbar. Als Beispiel: X sein eine sehr sehr große Primzahl. Dann gibt es nur zwei "Teiler" 1 und X. Mit obiger Method würde sich der Algo. demzufolgen "tot" laufen.

                          Gruß Hage

                          Comment

                          Working...
                          X