Avatar billede Dan Elgaard Ekspert
07. april 2025 - 11:22 Der er 12 kommentarer og
1 løsning

Eliminer 4 ens cifre

Jeg er på udkig efter en formel, der vil give mig et tilfældig tall mellem 0 og 9999, men, hvor tallet aldrig må blive 4 ens cifre.

Ved at benytte RANDBETWEEN(1;9998)

...har jeg elimineret '0000' og '9999', men ikke f.eks. '4444'.

Lige nu gør jeg det med IF() og OR(), hvilket virker fint.

Men, tænkte at der måske var en 'smartere' måde?
Avatar billede ebea Ekspert
07. april 2025 - 12:47 #1
Ikke som formel, men som VBA (men det ved du sikkert allerede ;-) )
Avatar billede jens48 Ekspert
07. april 2025 - 13:00 #2
Den blev lidt lang, men det kan lade sig gøre med denne formel:

=CHOOSE(RANDBETWEEN(1;9);RANDBETWEEN(1;1110);RANDBETWEEN(1112;2221);RANDBETWEEN(2223;3332);RANDBETWEEN(3334;4443);RANDBETWEEN(4445;5554);RANDBETWEEN(5556;6665);RANDBETWEEN(6667;7776);RANDBETWEEN(7778;8887);RANDBETWEEN(8889;9998))
Avatar billede ebea Ekspert
07. april 2025 - 13:39 #3
#2 - Den (lidt lange) formel, Jens, giver vel ingen garanti for, at det samme tal kan optræde igen ?
Excel har jo med RANDBETWEEN ingen tjek af, om det samme tal optræder flere gange, ved en gentagelse.
Avatar billede Dan Elgaard Ekspert
07. april 2025 - 15:59 #4
Skulle løsningen være VBA var spørgsmålet aldrig blevet oprettet :-)

Jeg burde nok have givet min nuværende formel, så folk ikke spildte deres tid - sorry.

=LET(R;RANDBETWEEN(1;9998);IF(OR(R=1111;R=2222;R=3333;R=4444;R=5555;R=6666;R=7777;R=8888);R+1;R)

Jeg bryder mig blot ikke om at teste hvert ugyldigt tal individuelt og derfor spørgsmålet.

Men, måske er min egen formel virkelig den korteste mulige løsning?
Avatar billede ebea Ekspert
07. april 2025 - 17:45 #5
#4 - (VBA) muligvis ikke).
Denne laver det samme som din, blot kortere (men stadig ikke garanteret fri for at 4 ens kan gentages).

=LET(R;RANDBETWEEN(1;9999);IF(MOD(R;1111)=0;R+1;R))

Formlen gør, at 1111 * 1–9 = alle 4 ens cifre (1111, 2222 osv.), og i det tilfælde lægges 1 til tallet (som i din egen formel).
Avatar billede Dan Elgaard Ekspert
07. april 2025 - 17:57 #6
Ja, selvfølgelig - hvorfor glemmer jeg altid MOD() funktionen :-)

Takker...
Avatar billede ebea Ekspert
07. april 2025 - 18:25 #7
#6 - 😁 Alderen !
Avatar billede jens48 Ekspert
08. april 2025 - 10:13 #8
Ja, #5 er noget enklere end min formel, men hvis jeg skal være lidt krakilsk, så giver den jo ikke et helt tilfældigt tal, da der vil være dobbelt så stor chance for at få 1112, 2223, 3334 osv. end for et andet vilkårligt tal.
Avatar billede Dan Elgaard Ekspert
08. april 2025 - 10:47 #9
Jah, måske, men det betyder ikke det store, da jeg blot skal benytte formlen til at lege lidt med Kaprekar's Routine.

En større kilde til fejl ved den formel er, at den laver tilfældig til op til 9999, hvorved tallet 10000 kan forekomme i sjældne tilfælde - men, det kan let overkommes ved at ændre 9999 til 9998.

Men, tak for input ...
Avatar billede ebea Ekspert
08. april 2025 - 11:19 #10
#8 - Ja, man skal da argumentere når muligheden er der ;-)

Men det er faktisk ikke korrekt, at der skulle være dobbelt så stor chance/mulighed for at ramme 4 ens.

Din formel, hopper helt over, at der kan forekomme 4 ens tal.

I min formel, bliver de i tilfældet med 4 ens, blot "filtreret" fra, i slutningen af formlen med "  IF(MOD(R;1111)=0;R+1;R)", som det også sker i Dan's egen formel i #4.

Så der er ikke forskel på om de rammer 4 ens, i de 2 formler.

Og som Dan skriver, kan man jo udelukke muligheden med at 9999 skulle ramme, ved at stoppe på 9998.
Avatar billede jens48 Ekspert
08. april 2025 - 12:25 #11
Hej Ebea,

Jeg tror du misforstod min pointe. Chancen for at ramme et bestemt tal er en til 10000, hvis man ikke udelukker nogen tal. Med min formel er ti tal udelukket of chancen for et bestemt tal bliver derfor 1 til 9990. Det gør den også med din formel, men for tallet 1112, osv bliver chancen for at få dette tal 2 til 9998. En løsning kunne være at modificere din formel til

=LET(R;RANDBETWEEN(1;9990);IF(MOD(R;1111)=0;9990+INT(R/1111);R))

Hver gang man rammer et tal med 4 ens cifre bliver det ændret til et tal mellem 9991  og 9998.

Undskyld, undskyld, jeg ved godt det er i småtingsafdelingen
Avatar billede ebea Ekspert
08. april 2025 - 15:02 #12
#11 - Muligvis misforstod jeg din pointe, Jens, og dog ;-)

Udgangspunktet var jo at undgå at ramme 4 ens i et 4 cifret tal. Så jeg kan ikke helt forstå det du skriver, med at f.eks. 1111 ændres til 1112 er et "problem".
Avatar billede jens48 Ekspert
08. april 2025 - 15:50 #13
Formelen i #5 ender med 1112 hver gang RANDBETWEEN kommer ud med 1111 eller 1112. Dermed vil 1112 forekomme dobbelt så hyppigt som de fleste andre tal. Og så er det reelt ikke helt tilfældigt. Derfor ændringsforslaget i #11. Men det er måske ikke noget problem.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel-kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester