Innehållsförteckning
I handledningen förklaras särdragen i Excel-algoritmen för generering av slumpmässiga tal och det visas hur man använder funktionerna RAND och RANDBETWEEN för att generera slumpmässiga tal, datum, lösenord och andra textsträngar i Excel.
Innan vi går in på olika tekniker för att generera slumpmässiga tal i Excel, ska vi först definiera vad de egentligen är. I klartext är slumpmässiga data en serie siffror, bokstäver eller andra symboler som saknar mönster.
Slumpmässighet har en mängd olika tillämpningar inom kryptografi, statistik, lotterier, spel och många andra områden. Eftersom slumpmässighet alltid har varit efterfrågad har det funnits olika metoder för att skapa slumpmässiga tal sedan urminnes tider, t.ex. genom att vända på mynt, rulla tärningar, blanda spelkort och så vidare. Naturligtvis kommer vi inte att använda oss av sådana "exotiska" tekniker i den här handledningen, utan vi kommer att fokusera på följandevad Excel slumptalsgenerator har att erbjuda.
Excel slumptalsgenerator - grunderna
Även om Excel slumpgeneratorn klarar alla standardtester av slumpmässighet genererar den inte sant slumpmässiga nummer. Men avskriva det inte omedelbart :) Pseudo slumpmässig De siffror som Excel slumpmässiga funktioner producerar är bra för många ändamål.
Låt oss ta en närmare titt på Excel-algoritmen för slumpgeneratorer så att du vet vad du kan förvänta dig av den och vad du inte kan förvänta dig.
Liksom de flesta datorprogram producerar Excel slumptalsgeneratorn Pseudo slumpmässiga tal. Det betyder för dig att slumptal som genereras av Excel i teorin är förutsägbara, förutsatt att någon känner till alla detaljer i generatorns algoritm. Detta är anledningen till att den aldrig har dokumenterats och knappast kommer att dokumenteras. Vad vet vi om generatorn för slumptal i Excel?
- Excel-funktionerna RAND och RANDBETWEEN genererar pseudo-slumpmässiga tal från Uniform distribution , även kallad rektangulär fördelning, där sannolikheten är lika stor för alla värden som en slumpvariabel kan anta. Ett bra exempel på den enhetliga fördelningen är att kasta en tärning. Resultatet av kastet är sex möjliga värden (1, 2, 3, 4, 5, 6) och det är lika troligt att vart och ett av dessa värden inträffar. För en mer vetenskaplig förklaring kan du gå in på wolfram.com.
- Det finns inget sätt att sätta igång vare sig Excel RAND- eller RANDBETWEEN-funktionen, som enligt ryktet initieras från datorns systemtid. Tekniskt sett kan en utsäde är utgångspunkten för att generera en sekvens av slumpmässiga tal. Och varje gång en slumpfunktion i Excel anropas används ett nytt frö som returnerar en unik slumpmässig sekvens. När du använder slumpgeneratorn i Excel kan du med andra ord inte få en upprepningsbar sekvens med funktionen RAND eller RANDBETWEEN, inte heller med VBA eller på något annat sätt.
- I tidiga Excel-versioner, före Excel 2003, hade algoritmen för slumpgenerering en relativt liten period (mindre än 1 miljon icke-återkommande slumpmässiga talsekvenser) och den misslyckades med flera standardtester av slumpmässighet på långa slumpmässiga sekvenser. Så om någon fortfarande arbetar med en gammal Excel-version är det bättre att inte använda RAND-funktionen med stora simuleringsmodeller.
Om du letar efter sant slumpmässiga data kan du förmodligen använda en tredjepartsgenerator för slumpmässiga tal, t.ex. www.random.org, vars slumpmässighet kommer från atmosfäriskt brus. De erbjuder gratistjänster för att generera slumpmässiga tal, spel och lotterier, färgkoder, slumpmässiga namn, lösenord, alfanumeriska strängar och andra slumpmässiga data.
Okej, denna ganska långa tekniska introduktion är avslutad och vi kommer nu till praktiska och mer användbara saker.
Excel RAND-funktionen - generera slumpmässiga verkliga tal
RAND i Excel är en av de två funktioner som är särskilt utformade för att generera slumpmässiga tal. Den returnerar ett slumpmässigt decimaltal (verkligt tal) mellan 0 och 1.
RAND() är en flyktig funktion, vilket innebär att ett nytt slumptal genereras varje gång arbetsbladet beräknas. Detta sker varje gång du utför någon åtgärd i arbetsbladet, t.ex. uppdaterar en formel (inte nödvändigtvis RAND-formeln, utan vilken annan formel som helst i ett arbetsblad), redigerar en cell eller matar in nya data.
Funktionen RAND finns i alla versioner av Excel 365-2000.
Eftersom Excel-funktionen RAND inte har några argument, skriver du helt enkelt in =RAND()
i en cell och sedan kopiera formeln till så många celler som du vill:
Låt oss nu ta ett steg längre och skriva några RAND-formler för att generera slumpmässiga tal enligt dina villkor.
Formel 1. Ange det övre gränsvärdet för intervallet.
För att generera slumpmässiga tal mellan noll och alla N värdet multiplicerar du RAND-funktionen med N:
RAND()* NOm du till exempel vill skapa en sekvens av slumpmässiga tal som är större än eller lika med 0 men mindre än 50 använder du följande formel:
=RAND()*50
Observera: Det övre gränsvärdet ingår aldrig i den returnerade slumpmässiga sekvensen. Om du till exempel vill få slumpmässiga tal mellan 0 och 10, inklusive 10, är den rätta formeln =RAND()*11
.
Formel 2. Generera slumpmässiga tal mellan två tal
Om du vill skapa ett slumpmässigt tal mellan två tal som du anger använder du följande RAND-formel:
RAND()*( B - A )+ AVar A är det nedre gränsvärdet (det minsta talet) och B är det övre gränsvärdet (det största talet).
Om du till exempel vill generera slumpmässiga nummer mellan 10 och 50 kan du använda följande formel:
=RAND()*(50-10)+10
Observera: Denna slumpformel kommer aldrig att ge ett tal som är lika med det största talet i det angivna intervallet ( B värde).
Formel 3. Generera slumpmässiga heltal i Excel
Om du vill få Excel-funktionen RAND att producera slumpmässiga heltal tar du någon av de ovan nämnda formlerna och lägger in den i INT-funktionen.
För att skapa slumpmässiga heltal mellan 0 och 50:
=INT(RAND()*50)
För att generera slumpmässiga heltal mellan 10 och 50:
=INT(RAND()*(50-10)+10)
Excel RANDBETWEEN-funktionen - generera slumpmässiga heltal i ett angivet intervall
RANDBETWEEN är en annan funktion som Excel tillhandahåller för att generera slumpmässiga tal. Den returnerar slumpmässiga heltal i det intervall som du anger:
RANDBETWEEN(botten, topp)Självklart, b ottom är den lägsta siffran och topp är det högsta talet i det intervall av slumpmässiga tal som du vill få fram.
Precis som RAND är Excels RANDBETWEEN en flyktig funktion som returnerar ett nytt slumpmässigt heltal varje gång kalkylbladet räknas om.
Om du till exempel vill generera slumpmässiga heltal mellan 10 och 50 (inklusive 10 och 50) använder du följande formel RANDBETWEEN:
=INTERVALL(10, 50)
Funktionen RANDBETWEEN i Excel kan skapa både positiva och negativa tal. Om du till exempel vill få en lista med slumpmässiga heltal från -10 till 10 anger du följande formel i arbetsbladet:
=RANDBETWEEN(-10, 10)
Funktionen RANDBETWEEN finns i Excel 365 - Excel 2007. I tidigare versioner kan du använda formeln RAND som visas i exempel 3 ovan.
Längre fram i den här handledningen hittar du ytterligare några formelexempel som visar hur du kan använda funktionen RANDBETWEEN för att generera andra slumpmässiga värden än heltal.
Tips: I Excel 365 och Excel 2021 kan du använda den dynamiska matrisen RANDARRAY-funktionen för att returnera en matris med slumpmässiga tal mellan två valfria tal som du anger.
Skapa slumpmässiga tal med angivna decimaler
Även om funktionen RANDBEETWEEN i Excel är utformad för att returnera slumpmässiga heltal kan du tvinga den att returnera slumpmässiga decimaltal med så många decimaler som du vill.
Om du till exempel vill få en lista med siffror med en decimalplats multiplicerar du de nedre och övre värdena med 10 och dividerar sedan det returnerade värdet med 10:
RANDBETWEEN( bottenvärde * 10, högsta värde * 10)/10Följande formel RANDBETWEEN ger slumpmässiga decimaltal mellan 1 och 50:
=INTERVALL(1*10, 50*10)/10
För att generera slumpmässiga tal mellan 1 och 50 med två decimaler multiplicerar du på liknande sätt RANDBETWEEN-funktionens argument med 100 och dividerar sedan resultatet med 100:
=INTERVALL(1*100, 50*100) / 100
Hur man genererar slumpmässiga datum i Excel
Om du vill få en lista med slumpmässiga datum mellan två givna datum använder du funktionen RANDBETWEEN i kombination med DATEVALUE:
RANDBETWEEN(DATUMVÄRDE( startdatum ), DATEVALUE( slutdatum. ))Om du till exempel vill få fram en lista med datum mellan 1 juni 2015 och 30 juni 2015, anger du följande formel i arbetsbladet:
=RANDBETWEEN(DATEVALUE("1-Jun-2015"),DATEVALUE("30-Jun-2015"))
Alternativt kan du använda funktionen DATE i stället för DATEVALUE:
=RANDBETWEEN(DATE(2015,6,1),DATEVALUE(2015,6,30))
Kom ihåg att tillämpa datumformatet på cellen/cellerna så får du en lista med slumpmässiga datum som liknar den här:
För ett antal avancerade alternativ, t.ex. för att generera slumpmässiga vardagar eller helger, se Avancerad slumpgenerator för datum.
Hur man infogar slumpmässiga tider i Excel
Om du kommer ihåg att tiderna i Excels interna system lagras som decimaler kan du använda Excel-standarden RAND-funktionen för att infoga slumpmässiga verkliga tal och sedan helt enkelt tillämpa tidsformatet på cellerna:
För att få fram slumpmässiga tider enligt dina kriterier krävs mer specifika slumpformler, vilket visas nedan.
Formel 1. Generera slumpmässiga tider inom det angivna intervallet.
Om du vill infoga slumpmässiga tider mellan två tider som du anger använder du antingen funktionen TIME eller TIMEVALUE tillsammans med Excel RAND:
TIME( starttid )+RAND() * (TID( starttid ) - TIME( sluttid ))) TIMEVALUE( starttid )+RAND() * (TIDSVÄRDE( starttid ) - TIMEVALUE( sluttid ))Om du till exempel vill infoga en slumpmässig tid mellan kl. 6.00 och 17.30 kan du använda någon av följande formler:
=TID(6,0,0) + RAND() * (TID(17,30,0) - TID(6,0,0))
=TIDSVÄRDE("6:00 AM") + RAND() * (TIDSVÄRDE("17:30 PM") - TIDSVÄRDE("6:00 AM"))
Formel 2. Generering av slumpmässiga datum och tider
Om du vill skapa en lista med slumpmässiga datum och tider , använda en kombination av funktionerna RANDBETWEEN och DATEVALUE:
RANDBETWEEN(DATUMVÄRDE( startdatum) , DATEVALUE( slutdatum. ))) + RANDBETWEEN(TIDSVÄRDE( starttid ) * 10000, TIDSVÄRDE( sluttid ) * 10000)/10000Om du vill infoga slumpmässiga datum mellan den 1 juni 2015 och den 30 juni 2015 med en tid mellan 07:30 och 18:00 fungerar följande formel utmärkt:
=RANDBETWEEN(DATEVALUE("1-Jun-2015"), DATEVALUE("30-Jun-2015")) + RANDBETWEEN(TIMEVALUE("7:30 AM") * 10000, TIMEVALUE("6:00 PM") * 10000) / 10000
Du kan också ange datum och klockslag med hjälp av funktionerna DATE och TIME:
=RANDBETWEEN(DATE(2015,6,1), DATE(2015,6,30)) + RANDBETWEEN(TIME(7,30,0) * 10000, TIME(18,0,0) * 10000) / 10000
Generera slumpmässiga bokstäver i Excel
För att få fram en slumpmässig bokstav krävs en kombination av tre olika funktioner:
=CHAR(RANDBETWEEN(CODE("A"),CODE("Z"))))
Var A är det första tecknet och Z är det sista tecknet i det bokstavsintervall som du vill inkludera (i alfabetisk ordning).
I formeln ovan:
- CODE returnerar numeriska ANSI-koder för de angivna bokstäverna.
- RANDBETWEEN tar de siffror som returneras av CODE-funktionerna som de lägsta och högsta värdena i intervallet.
- CHAR omvandlar slumpmässiga ANSI-koder som returneras av RANDBETWEEN till motsvarande bokstäver.
Eftersom ANSI-koderna är olika för stora och små bokstäver, är denna formel Skiftlägeskänslig .
Om någon minns ANSI Character Codes Chart utantill finns det inget som hindrar dig från att ange koderna direkt till funktionen RANDBETWEEN.
För att till exempel få slumpmässiga Bokstäver i versaler mellan A (ANSI-kod 65) och Z (ANSI-kod 90), skriver du:
=CHAR(RANDBETWEEN(65, 90))
För att generera små bokstäver från a (ANSI-kod 97) till z (ANSI-kod 122) använder du följande formel:
=CHAR(RANDBETWEEN(97, 122))
Om du vill infoga ett slumpmässigt specialtecken, t.ex. ! " # $ % & ' ( ) * + , - . /, använda funktionen RANDBETWEEN med botten parametern är satt till 33 (ANSI-kod för "!") och topp parametern är satt till 47 (ANSI-kod för "/").
=CHAR(RANDBETWEEN(33,47))
Generera textsträngar och lösenord i Excel
För att skapa en slumpmässig textsträng i Excel behöver du bara sammanfoga flera CHAR / RANDBEETWEEN-funktioner.
Om du till exempel vill skapa en lista med lösenord som består av 4 tecken kan du använda en formel som liknar den här:
=RANDBETWEEN(0,9) & CHAR(RANDBETWEEN(65,90)) & CHAR(RANDBETWEEN(97,122)) & CHAR(RANDBETWEEN(33,47))
För att göra formeln mer kompakt har jag angett ANSI-koderna direkt i formeln. De fyra funktionerna returnerar följande slumpmässiga värden:
MELLAN(0,9)
- returnerar slumpmässiga tal mellan 0 och 9.CHAR(RANDBETWEEN(65,90))
- returnerar slumpmässiga UPPERCASE-bokstäver mellan A och Z .CHAR(RANDBETWEEN(97, 122))
- returnerar slumpmässiga små bokstäver mellan a och z .CHAR(RANDBETWEEN(33,47))
- returnerar slumpmässiga specialtecken.
De textsträngar som genereras med ovanstående formel skulle vara något i stil med " 4Np# " eller " 2Yu& ".
Ett ord av försiktighet! Om du använder en liknande formel för att skapa slumpmässiga lösenord kommer de inte att vara starka. Naturligtvis finns det inget som säger att du inte kan skapa längre textsträngar genom att kedja flera CHAR/RANDBETWEEN-funktioner. Det är dock omöjligt att slumpmässigt välja ordningsföljd för tecknen, dvs. den första funktionen returnerar alltid ett tal, den andra funktionen returnerar en stor bokstav och så vidare.
Om du letar efter en avancerad slumpmässig lösenordsgenerator i Excel som kan producera textsträngar av valfri längd och med valfritt mönster, kan du kolla in Advanced Random Generator för teststrängar.
Tänk också på att de textsträngar som genereras med formeln ovan kommer att ändras varje gång kalkylbladet räknas om. För att se till att dina strängar eller lösenord förblir desamma när de väl har skapats måste du hindra funktionen RANDBETWEEN från att uppdatera värdena, vilket leder oss direkt till nästa avsnitt.
Hur man förhindrar att RAND och RANDBETWEEN räknas om
Om du vill få en permanent uppsättning slumpmässiga siffror, datum eller textsträngar som inte ändras varje gång arket räknas om, kan du använda någon av följande tekniker:
- Om du vill förhindra att funktionerna RAND eller RANDBETWEEN räknas om i en cell , markera cellen, växla till formellfältet och tryck på F9 för att ersätta formeln med dess värde.
- Om du vill förhindra att en slumpmässig funktion i Excel räknas om använder du funktionen Klistra in special> värden. Markera alla celler med den slumpmässiga formeln, tryck på Ctrl + C för att kopiera dem, högerklicka sedan på det valda området och klicka på Klistra in speciellt > Värden .
Om du vill veta mer om den här tekniken för att "frysa" slumpmässiga tal, se Hur man ersätter formler med värden.
Hur man genererar unika slumpmässiga nummer i Excel
Ingen av Excels slumpfunktioner kan skapa unika slumpvärden. Om du vill skapa en lista med slumpmässiga tal utan dubbletter utföra dessa steg:
- Använd funktionen RAND eller RANDBETWEEN för att skapa en lista med slumpmässiga tal. Skapa fler värden än du egentligen behöver eftersom vissa kommer att vara dubbletter som måste tas bort senare.
- Konvertera formler till värden enligt ovan.
- Ta bort dubbla värden antingen med Excels inbyggda verktyg eller med vår avancerade Duplicate Remover for Excel.
Fler lösningar finns i denna handledning: Hur man genererar slumpmässiga nummer utan dubbletter.
Avancerad slumpmässig talgenerator för Excel
Nu när du vet hur man använder slumpfunktioner i Excel, ska jag visa dig ett snabbare, enklare och formelfritt sätt att skapa en lista med slumpmässiga tal, datum eller textsträngar i dina kalkylblad.
AbleBits Random Generator for Excel har utformats som ett kraftfullare och mer användarvänligt alternativ till Excels funktioner RAND och RANDBETWEEN. Den fungerar lika bra med alla versioner av Microsoft Excel 2019, 2016, 2013, 2010, 2007 och 2003 och löser de flesta kvalitets- och användbarhetsproblem med standardfunktionerna för slumpmässigt urval.
AbleBits algoritm för generering av slumpmässiga tal
Innan vi visar vår slumpgenerator i praktiken vill jag ge dig några viktiga kommentarer om algoritmen så att du vet exakt vad vi erbjuder.
- AbleBits Random Number Generator for Excel är baserad på Mersenne Twister-algoritmen, som anses vara en branschstandard för pseudo-slumpning av hög kvalitet.
- Vi använder version MT19937 som producerar en normalfördelad sekvens av 32-bitars heltal med en mycket lång period på 2^19937 - 1, vilket är mer än tillräckligt för alla tänkbara scenarier.
- Slumpmässiga nummer som genereras med denna metod är av mycket hög kvalitet. Random Number Generator har klarat flera tester av statistisk slumpmässighet, inklusive de välkända NIST Statistical Test Suite- och Diehard-testerna och några av TestU01 Crushs slumpmässighetstester.
Till skillnad från Excel slumpfunktioner skapar vår slumpgenerator slumpmässiga nummer permanenta slumpmässiga värden som inte ändras när ett kalkylblad räknas om.
Som redan nämnts erbjuder denna avancerade slumpgenerator för Excel ett formelfritt (och följaktligen felfritt :) sätt att skapa olika slumpmässiga värden som t.ex:
- Slumpmässiga heltal eller decimaltal, inklusive unika nummer.
- Slumpmässiga datum (arbetsdagar, helger eller både och, om så önskas, unika datum).
- Slumpmässiga textsträngar, inklusive lösenord med en viss längd och ett visst mönster, eller genom mask.
- Slumpmässiga booleska värden TRUE och FALSE
- Slumpmässigt urval från anpassade listor
Och nu ska vi se slumpgeneratorn i aktion, som utlovat.
Generera slumpmässiga tal i Excel
Med AbleBits Random Number Generator är det lika enkelt att skapa en lista med slumpmässiga nummer som att klicka på Generera knapp.
Generering av unika slumpmässiga helheter
Allt du behöver göra är att välja det område som ska fyllas med slumpmässiga heltal, ställa in de nedre och övre värdena och, som tillval, kontrollera Unika värden box.
Generering av slumpmässiga reella tal (decimaler)
På samma sätt kan du generera en serie slumpmässiga decimaltal i det intervall som du anger.
Skapa slumpmässiga datum i Excel
För datum erbjuder vår slumpgenerator följande alternativ:
- Generera slumpmässiga datum för en viss tidsperiod - du anger det lägsta datumet i fältet Från och det översta datumet i rutan Till box.
- Ange veckodagar, helger eller båda.
- Generera unika datum.
Generera slumpmässiga textsträngar och lösenord
Förutom slumpmässiga tal och datum kan du med denna slumpgenerator enkelt skapa slumpmässiga alfanumeriska strängar med vissa teckenuppsättningar. Den maximala stränglängden är 99 tecken, vilket gör det möjligt att generera riktigt starka lösenord.
Ett unikt alternativ som AbleBits Random Number Generator erbjuder är att skapa slumpmässiga textsträngar efter mask Detta är en mycket användbar funktion för att generera globalt unika identifierare (GUID), postnummer, SKU:er och så vidare.
Om du till exempel vill få en lista med slumpmässiga GUID:er väljer du den hexadecimala teckenuppsättningen och skriver ????????-????-????-????-???????????? i fältet Mask som visas i skärmbilden:
Om du är intresserad av att prova vår slumpgenerator är du välkommen att ladda ner den nedan som en del av vår Ultimate Suite for Excel.
Tillgängliga nedladdningar
Exempel på slumpmässiga formler (.xlsx-fil)
Ultimate Suite 14-dagars fullt fungerande version (.exe-fil)