WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Aus Zufallsmatrix Vektoren mit definierten Zahlenabständen

 

Ristrafil
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2020, 01:31     Titel: Aus Zufallsmatrix Vektoren mit definierten Zahlenabständen
  Antworten mit Zitat      
Hallo Zusammen,

ich habe mit

for n = 1:1:1000
a = randi(1000,1,6)
end

zufällige Zeilenvektoren erstellt (hier sinds zum beispiel 1000 Stück).

Jetzt würde ich mir gerne die Vektoren anzeigen lassen, bei denen der Abstand zwischen 2 zahlen min 12 und max 50 ist.

z.B. [ 20 40 66 80 101 134] : die zahlen sind min 12 und max 50 voneinander entfernt.

hat einer eine Idee wie man das schreiben könnte bzw. funktioniert das überhaupt mit meiner Zufallsmatrix aus Zeilenvektoren?

Vielen DAnk für eure Hilfe

Lg
Ristrafil
Private Nachricht senden Benutzer-Profile anzeigen


Ausloggen
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 08.01.20
Wohnort: München
Version: ---
     Beitrag Verfasst am: 10.12.2020, 07:23     Titel:
  Antworten mit Zitat      
Hi Ristrafil,

du könntest die Zufallsvektoren erst einmal speichern, um dann mit einer zweiten for-Schleife die Differenzen zu bilden (Betrag?). Mit einer if-Abfrage kannst du dann die gewünschten Kriterien abfragen.

In meinem Code habe ich keinen übereinstimmenden Vektor gefunden, der diese Kriterien erfüllt.

Code:

    a = zeros(1000,6);
    difference = zeros(1000,6);

    for n = 1:1000
    a(n,:) = randi(1000,1,6);
    end

    for n = 1:1000
        for i = 1:5
            difference(n,i) = abs(a(n,i+1) - a(n,i));        
        end

        if max(difference(n,:)) < 50 && min(difference(n,:)) > 12
            a(n,:)
        end
    end
 


Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Ristrafil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 03.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2020, 12:17     Titel:
  Antworten mit Zitat      
hallo

erstmals vielen dank für die Mühe das zu schreiben.

ich habe es auch ausprobiert und bei mir kommen auch keine Vektoren mit den 2 gewünschten Kriterien raus.

Liegt es vielleicht daran, dass 1000 Wiederholungen zu wenig sind? oder brauch ich einen ganz anderen Ansatz?

Vielen dank

lg ristrafil
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.12.2020, 14:54     Titel:
  Antworten mit Zitat      
Hallo,

man kann das ja mal überschlagen:
von einer Zahl zur nächsten sind 78 / 1000 Zahlen zulässig. Wenn eine Zahl so klein oder groß ist, dass man bei Wahl einer noch kleineren oder größeren Zahl aus dem zulässigen Bereich raus läuft, dann weniger, aber das kann man erst mal vernachlässigen.

Das muss dann 5 Mal nacheinander passieren:
p = (78/1000)^5
p =
2.8872e-06

Dann nach der berühmten Formel "mindestens 1 = 1 - keins":
p1000 = 1-(1-p)^1000
p1000 =
0.0029

Die Wahrscheinlichkeit, dass man unter 1000 Vektoren einen solchen findet, ist 0,2%.

Wenn man mehr Vektoren generiert, erhöht sich die Wahrscheinlichkeit natürlich.

Ob du einen anderen Ansatz brauchst, hängt davon ab, was du eigentlich letztlich erreichen willst. Wenn du Vektoren bekommen möchtest, die die genannte Bedingung erfüllen, dann würde ich sie direkt generieren:

Code:
x = zeros(1,6);
x(1) = randi(1000);
for k = 2:6
    while x(k) < 1 || x(k) > 1000 || abs(x(k) - x(k-1)) >= 50 || abs(x(k) - x(k-1)) <= 12
        x(k) = randi(1000);
    end
end
x


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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.