0

Random - doppelte vermeiden

Was ist hier falsch??

—-

let myZ := 1 + floor(9 * random());
if (select RANDOM1ERWEITERT)[Zufallszahl = myZ] > 1 then
alert("Achtung, diese Zahl existiert bereits");
Zufallszahl := null
else
Zufallszahl := myZ;
alert("Alles i. O. ")
end

—-

 

erzeugt einstellige random Zahlen, aber verhindert nicht doppelte

 

Wolfgang

4 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Du hast vergessen die Datensätze zu zählen:

    let myZ := 1 + floor(9 * random());
    if cnt((select RANDOM1ERWEITERT)[Zufallszahl = myZ] )> 1 then
    alert("Achtung, diese Zahl existiert bereits");
    Zufallszahl := null
    else
    Zufallszahl := myZ;
    alert("Alles i. O. ")
    end

    —-

    Leo

    • Wolfgang
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, sorry habe ich durch das probieren hier vergessen wieder reinzuschreiben.  Genau so wie Du es jetzt geschrieben hast, habe ich es gleich zu Anfang probiert und er gibt mir dennoch doppelte aus. Trigger ist bei neuem Datensatz drin.

    Wolfgang

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    let myZ := 1 + floor(9 * random());
    Zufallszahl := myZ;
    if cnt((select RANDOM1ERWEITERT)[Zufallszahl = myZ] )> 1 then
    alert("Achtung, diese Zahl existiert bereits");
    Zufallszahl := null
    else
    Zufallszahl := myZ;
    alert("Alles i. O. ")
    end

    • Wolfgang
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Leo, danke,das war es. Wolfgang